html事件处理、Dom0级事件处理、Dom2级事件处理、IE处理

事件处理程序

事件处理程序分为:html事件处理、Dom0级事件处理、Dom2级事件处理、IE事件处理。下面我们来简述给个处理程序。
html事件处理:

<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Js事件详解--事件处理</title>
    </head>
    <body>
        <div id="div">
            <button id="btn1" onclick="demo()">按钮</button>
        </div>
        <script>
            function demo(){
                alert("hello html事件处理");
            }
        </script>
    </body>
</html> 

简单明了,不用调用其他元素和属性,不过,当你需要修改函数demo名字时,你需要修改function函数以及onclick点击事件里面的名称。
Dom2级事件处理:

<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Js事件详解--事件处理</title>
    </head>
    <body>
        <div id="div">
            <button id="btn1">按钮</button>
        </div>
        <script>
            var btn1=document.getElementById("btn1");
            btn1.onclick=function(){alert("Hello DOM0级事件处理程序1");}//被覆盖掉
            btn1.onclick=function(){alert("Hello DOM0级事件处理程序2");}
            btn1.onclick=function(){alert("Hello DOM0级事件处理程序3");}
            // btn1.onclick=null;  清除事件处理
   </body>
</html> 

这个处理程序,没有给的函数名称,所以修改起来很方便,只需要修改一个地方即可,不过缺点是下一个处理程序会把上一个覆盖掉。

Dom2事件处理:

<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Js事件详解--事件处理</title>
    </head>
    <body>
        <div id="div">
            <button id="btn1">按钮</button>
        </div>
        <script>
            var btn1=document.getElementById("btn1");
            btn1.addEventListener("click",demo1);
            btn1.addEventListener("click",demo2);
            btn1.addEventListener("click",demo3);
            function demo1(){
                alert("DOM2级事件处理程序1")
            }
            function demo2(){
                alert("DOM2级事件处理程序2")
            }
            function demo3(){
                alert("DOM2级事件处理程序3")
            }
            btn1.removeEventListener("click",demo2);
        </script>

相比于前两个,Dom2处理程序运用的复杂些,通过添加句柄来实现函数的修改,并且下一个处理程序不会把上一个覆盖掉,并且是按顺序执行。克服了之前两个处理程序的不足,是目前工作中经常用到的一种处理程序。

IE事件处理程序:

<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Js事件详解--事件处理</title>
    </head>
    <body>
        <div id="div">
            <button id="btn1">按钮</button>
        </div>
        <script>
            var btn1=document.getElementById("btn1"); 
            if(btn1.addEventListener){
                btn1.addEventListener("click",demo);
            }else if(btn1.attachEvent){
                btn1.attachEvent("onclick",demo); //IE处理程序
            }else{
                btn.onclick=demo();
            }
            function demo(){
                alert("Hello");
            }
        </script>
  </body>
</html> 

IE实现了与DOM中类似的两个方法:attachEvent()和detachEvent()。在IE中使用attachEvent()与使用DOM0级方法的主要区别在于事件处理程序的作用域。在使用DOM0级方法的情况下,事件处理程序会在其所属元素的作用域内运行;在使用attachEvent()方法的情况下,事件处理程序会在全局作用域中运行,因此this指向window。

以上是本篇博客全部内容,大家可以在下面评论,一起学习JS。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值