函数与事件响应

函数

函数初步

函数的概念

  • 函数,是将一段公共的代码进行封装,给它起个名字叫“函数”。
  • 函数可以一次定义,多次调用。
  • 函数,可以将常用的功能代码,进行封装。如:用户名的验证、验证码函数、邮箱验证、手机号码验证
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function max(a,b){
                if(a>b){
                    document.write(a+"比较大<br/>");
                }else{
                    document.write(b+"比较大<br/>");
                }
            }
            max(10,50);
            max(0,100);
            max(-1,2);
            max(100,100);
        </script>
    </head>
    <body>
    </body>
</html>

函数的定义格式

function functionName([参数1][,参数2][,参数N]){
    函数的功能代码;
    [return 参数r]
}

函数定义格式的说明

  • function关键字是必须的,全小写。

  • functionName:函数的名称。函数名的命名规则与变量命名一样。

  • ():是定义函数时接收数据的参数。参数可有可无,多个参数之间用逗号隔开。

  • 形参(形式参数):定义函数时的参数就是“形参”。主要用来接收调用函数者传过来的数据。

  • 形参的名称,与变量的命名规则一样。

  • 但形参不能用“var”关键字定义。

  • 参数只能存在于函数中。

  • 参数不需要声明,直接使用。

  • 实参(实际参数):调用函数时的参数称为“实参”。实参就是真正的数据。

  • {}是函数的功能。

  • return语句,用于向函数调用者返回一个值,并立即结束函数的运行。

  • return用于中止函数的运行。

  • break用于中止各种循环。

函数的调用

函数定义是不会执行的,那么,函数必须调用,才会有效果。

函数的调用:直接写函数名后跟小括号(),如果有参数则写参数。小括号不能省略。

函数的参数

  • 形参的个数,要与实参的个数一致;
  • 形参的顺序,要与实参的顺序一致。
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
        //定义函数
            function information(name,age){
               document.write("大家好,我叫"+name+",今年"+age+"岁<br/>")
            }
            information("张三",24);
            information("李四",30);
            information("涛哥",20);
        </script>
    </head>
    <body>
    </body>
</html>

全局变量和局部变量

全局变量:

  • 可以在网页的任何地方(函数内部和函数外部)使用的变量,就是“全局变量”。
  • 在函数外部定义的变量,就是“全局变量”。
  • 全局变量”既可以在函数外使用,也可以在函数内部使用。
  • “全局变量”在网页关闭时,自动消失(释放空间)。

局部变量:

  • 只能在函数内部使用的变量,称为“局部变量”。
  • “局部变量”在函数内部定义,在函数内部使用。
  • “局部变量”在函数外部无法访问。
  • “局部变量”在函数执完完毕就消失了。
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            //定义全局变量
            var name = "小明";
            function information(){
                //定义局部变量
                var age = 24;
               document.write("大家好,我叫"+name+",今年"+age+"岁<br/>");
            }
            //调用函数
            information();
            //下面的这行代码会报错,说age不存在
            //因为age变量是局部变量,函数执行完毕,局部变量就消失了
            //document.write("大家好,我叫"+name+",今年"+age+"岁<br/>");
        </script>
    </head>
    <body>
    </body>
</html>

拷贝传值和引用传值

拷贝传值:基本数据类型都是“拷贝传值”。

  • 拷贝传值,就是将一个变量的值“拷贝”一份,传给了另一个变量。
  • 拷贝传值完之后,两个变量之间没有任何联系,修改其中一个变量的值,另一个不会改变。
  • 这两个变量之间,是相互独立的,没有任何联系。
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            var a=10;
            var b=a;
            a++;
            document.write("a的值为:"+a+"<br/>");
            document.write("b的值为:"+b);
        </script>
    </head>
    <body>
    </body>
</html>

引用传址:复合数据类型都是“引用传地址”

引用传址:将一个变量的数据地址,“拷贝”一份,传给另了另一个变量。这两个变量,指向“同一个地址”。

大家共享同一份数据。

如果其中一个变量的值发生了改变,那么,另一个变量的值也得变。要变一起变。

因此,这两个变量是有联系的,要变大家一起变。

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            var arr1=[10,20,30,40];
            var arr2=arr1;
            arr1[1]=100;
            document.write("arr1[1]的值为:"+arr1[1]+"<br/>");
            document.write("arr2[1]的值为:"+arr2[1]);
        </script>
    </head>
    <body>
    </body>
</html>

匿名函数

即没有名字的函数。

  • 匿名函数,不能单独定义的,也不能单独调用。
  • 匿名函数,一般是作为数据给其它变量赋值的。可以给普通变量、数组元素、对象的属性赋值。
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            var a=88 ;//将数值赋值给变量a,此时变量a就是“数值型”变量
            var a="asd"; //将字符串赋值给a,此时变量a就是“字符型”变量
            var a=true;  //将布尔值赋值给变量a,此时变量a就是“布尔型”变量
            var a=[10,20];//将数组赋值给变量a,此时变量a就是“数组型”变量
            var a=function(name,age){//将函数值赋值给变量a,此时变量a就是“函数型”变量
                window.alert("我叫"+name+"今年"+age+"岁");
            }
            //调用函数
            a("小明",20);
            var b=a;//将变量a的地址,拷贝一份传给变量b
            b("小白",22);
        </script>
    </head>
    <body>
    </body>
</html>

事件响应

事件

事件的概念

事件:指的是文档或者浏览器窗口中发生的一些特定交互瞬间。我们可以通过侦听器(或者处理程序)来预定事件,以便事件发生的时候执行相应的代码。

事件处理程序

事件处理程序:我们用户在页面中进行的点击这个动作,鼠标移动的动作,网页页面加载完成的动作等,都可以称之为事件名称,即:onclick、mousemove、load等都是事件的名称。响应某个事件的函数则称为事件处理程序,或者叫做事件侦听器。

下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

6.png

鼠标单击事件(onclick)

onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件。同时onclick事件调用的程序块就会被执行,通常与按钮一起使用。

例子

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun1(){
                window.alert("欢迎来到php.cn")
            } 
            function fun2(){
                window.alert("你看,你还是点了我")
            }
        </script>
    </head>
    <body>
        <form>
            <input name="点我看看" type="button" value="点我看看" onclick="fun1()"/>
            <p onclick="fun2()">不要点我</p>
        </form>
    </body>
</html>

鼠标经过事件(onmouseover)

鼠标经过事件,当鼠标移到一个对象上时,该对象就触发onmouseover事件,并执行onmouseover事件调用的程序。

实例:当鼠标移动到绑定了onmouseover事件的元素时,弹出对话框

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("请确认四周没有人再点击提交")
            } 
        </script>
    </head>
    <body>
        <form>
            机密:
            <input name="txt" type="text" >
            <input name="" type="button" value="提交" onmouseover="fun()"/>
        </form>
    </body>
</html>

鼠标移开事件(onmouseout)

鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序。

改造我们的上一个例子:

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("提交成功了")
            } 
        </script>
    </head>
    <body>
        <form>
            机密:
            <input name="txt" type="text" >
            <input name="" type="button" value="提交之后移开鼠标"  onmouseout="fun()"/>
        </form>
    </body>
</html>

光标聚焦事件(onfocus)

当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行。

如下代码, 当将光标移到文本框内时,即焦点在文本框内,触发onfocus 事件,并调用函数fun()。

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("请输入真实姓名")
            } 
        </script>
    </head>
    <body>
        <form>
            姓名:
            <input name="username" type="text" value="请输入姓名" onfocus="fun()" >
        </form>
    </body>
</html>

光标失焦事件(onblur)

onblur事件与onfocus是相对事件,当光标离开当前获得聚焦对象的时候,触发onblur事件,同时执行被调用的程序。

下面例子,当光标离开时,让用户确认是否已经输入信息:

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("请确认这是您的真实姓名")
            } 
        </script>
    </head>
    <body>
        <form>
            姓名:
            <input name="username" type="text" value="请输入姓名" onblur="fun()" >
        </form>
    </body>
</html>

内容选中事件(onselect)

选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。

如下实例,当选择文字后,弹出禁止赋值警告对话框

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("这是个人简介,禁止复制")
            } 
        </script>
    </head>
    <body>
        <form>
            个性介绍:<br/><textarea name=" introduction" cols="30" rows="4" onselect="fun()">小明:
            PHP高级工程师
            全栈工程师</textarea>
        </form>
    </body>
</html>

文本框内容改变事件(onchange)

通过改变文本框的内容来触发onchange事件,同时执行被调用的程序。

如下代码,当用户将文本框内的文字改变后,弹出对话框“您刚刚修改了个人简介”。

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("您刚刚修改了个人简介")
            } 
        </script>
    </head>
    <body>
        <form>
            个性介绍:<br/><textarea name=" introduction" cols="30" rows="4" onchange="fun()">小明:
            PHP高级工程师
            全栈工程师</textarea>
        </form>
    </body>
</html>

加载事件(onload)

事件会在页面加载完成后,立即发生,同时执行被调用的程序。
注意:

  • 加载页面时,触发onload事件,事件写在标签内。
  • 此节的加载页面,可理解为打开一个新页面时。
    如下代码,当加载一个新页面时,弹出对话框“加载中......”。
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>php.cn</title>
        <script>
            function fun(){
                window.alert("加载中......")
            }
        </script>
    </head>
    <body onload="fun()">
        欢迎来到php.cn
    </body>
</html>
posted @ 2022-07-07 17:22  ppqppl  阅读(41)  评论(0编辑  收藏  举报