现在说说什么是函数。
函数的作用可以写一次代码,然后反复的重用这个代码。如:我们要完成多组数和
的功能。
var sum;
sum=3+2;
alert(sum);
sum=7+8;
alert(sum);
...//不停重复两行代码
如果要实现8组数的和,就需要16行代码,实现的越多,代码行也就越多。所以我们
可以把完成特定功能的代码块放到一个函数里面去,直接调用这个函数,就省去重
复输入大量代码的麻烦。
使用函数完成:
function add2(a,b){
sum=a+b;
alert(sum);
}//只需要调用函数就可以
如何定义一个函数呢?看看下面的格式:
function 函数名()
{
函数体;
}
function定义函数的关键字,“函数名”你为函数取的名字,“函数体”替换为完
成特定功能的代码。
我们完成对两个数求和并显示结果的功能,并给函数起一个有意义的名字:"add2"
代码如下:
<script type="text/javascript">
function add2(){
sum=3+2;
alert(sum);
}
add2();
</script>
函数定义好后,是不能自动执行的,需要调用它,直接在需要的位置写函数名。
第一种情况在<script>标签内调用。
<script type="text/javascript">
function add2()
{
sum=1+1;
alert(sum);
}
add2();//调用函数,直接写函数名。
</script>
第二种情况:在html文件中调用,如通过点击按钮后调用定义好的函数。
<html>
<head>
<script type="text/javascript">
function add2()
{
sum=5+6;
alert(sum);
}
</script>
</head>
<body>
<form>
<input type="button" value="click it" onclick="add2()">
//按钮,onclick点击事件,直接写函数名
</form>
</body>
</html>
注意:鼠标事件后面会说的。
上面说的add2()函数不能实现任意指定两数相加。其实,定义函数还可以如下格式:
function 函数名(参数1,参数2)
{
函数代码
}
注意:参数可以多个,根据需要增减参数个数,参数之间用(逗号,)隔开
按照这个格式,函数实现任意两个数的和应该写成:
function add2(x,y)
{
sum=x+y;
document.write(sum);
}
x和y则是函数的两个参数,调用函数的时候,我们可以通过这两个参数把两个实际
的加数传递给函数了。例如,add2(3,4)会求3+4的和,add2(60,20)则会求60和20的
和。
写了很久了,发现要输出结果总是用documen.write,如果想对函数的结果进行处理
怎么办呢?
我们只要把document.write(sum)改成如下代码:
function add2(x,y)
{
sum=x+y;
return sum;//返回函数值,return后面的值叫做返回值。
}
还可以通过变量存储调用函数的返回值,代码如下:
result=add2(3,4);//语句执行后,result变量中的值为7.
注意:函数中参数和返回值不只是数字,还可以是字符串等其他类型。
下面是一个编程练习:
使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数。
代码如下:
<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>函数</title>
<script type="text/javascript">
function thant(x,y){
if(x>y){
return x;
}
else if(x<y){
return y;
}
}
var biger=thant(5,4);
//函数体,判断两个整数比较的三种情况
//调用函数,实现下面两组数中,返回较大值。
document.write(" 5 和 4 的较大值是:"+biger+"<br>");
var biger=thant(6,3);
document.write(" 6 和 3 的较大值是:" +biger);
</script>
</head>
<body>
</body>
</html>
接着我们来说说JavaScript创建动态页面。事件是可以被JavaScript侦测到的行为。
网页中的每个元素都可以产生某些可以出发JavaScript函数或程序的事件。
比如说,当用户单击按钮或者提交表单数据时,就发生一个鼠标单击(onclick)事件
需要浏览器做出处理,返回给用户一个结果。
主要事件表:
事件 说明
onclick 鼠标单击事件
onmouseover 鼠标经过事件
onmouseout 鼠标移开事件
onchange 文本框内容改变事件
onselect 文本框内容被选中事件
onfocus 光标聚集
onblur 光标离开
onload 网页导入
onunload 关闭网页
onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件。同时onclick
事件调用的程序块就会被执行,通常与按钮一起使用。
比如我们单击按钮时,出发onclick事件,并调用两个数和的函数add2()。代码如下:
<html>
<head>
<script type="text/javascript">
function add2(){
var numa,numb,sum;
numa=6;
numb=8;
sum=numa+numb;
document.write("两数和为:"+sum);
}
</script>
</head>
<body>
<form>
<input name="button" type="button" value="点击提交" onclick="add2()"/>
</form>
</body>
</html>
注意:在网页中,如使用事件,就在该元素中设置事件属性。
鼠标经过事件(onmouseover)
鼠标经过事件,当鼠标移到一个对象上时,该对象就触发onmouseover事件,并执行
onmouseover事件调用的程序。
现实鼠标经过"确定"按钮时,触发onmouseover事件,调用函数info(),弹出消息框
代码如下:
<!DOCTYPE HTML>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>onmouseout</title>
<script type="text/javascript">
function info(){
confirm("请输入姓名后,再单击确定!");}
</script>
</head>
<body>
<form>
密码:<input name="password" type="text">
<input name="button" type="button" value="确定" onmouseover="info()">
<!-- 当鼠标经过确定按钮式触发onmouseover="info()" -->
</form>
</body>
</html>
既然有鼠标经过事件,肯定也有鼠标移开事件(onmouseout)
鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序。
当鼠标移动到"登录"按钮上,然后再移开时,触发onmouseout事件,调用函数message()
代码如下:
<!DOCTYPE HTML>
<head>
<mate http-equiv="Content-Type" content="text/html";charset="utf-8">
<title>onmouseout</title>
<script type="text/javascript">
function message(){
confirm("不要离开,只要输入密码,再单击登录就OK了!")
}
</script>
</head>
<body>
<form>
密码:<input name="password" type="text">
<input name="button" type="button" value="登录" onmouseout="message()">
<!-- 当移开"登录"按钮,触发onmouseout="message()" -->
</form>
</body>
</html>
当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行。
如下代码,当将光标移到文本框内时,即焦点在文本框内,触发onfocus事件,并调
用函数message()。
<!DOCUTYPE HTML>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>onfocus</title>
<script type="text/javascript">
function message(){
alert("请在此输入姓名!");
}
</script>
</head>
<body>
<form>
姓名:<input name="username" type="text" value="请输入姓名" onfocus="message()">
<!-- 当光标在文本框内时(即文本框得到焦点),调用message()函数 -->
</form>
</body>
</html>