JS事件监听器

1.传统事件绑定
    1.重复添加事件会覆盖
    2.不能精确的删除事件上的某一个函数
2.事件监听器(给某个按钮需要绑定多个函数,精确删除) 低版本IE浏览器不兼容
    addEventListener()
        格式:node.addElementListener("click")
        参数:
            第一个参数  事件类型
            第二个参数  绑定函数
            第三个参数  布尔值  true   事件捕获
                               false  事件冒泡  默认   
    
    removeEventListener()
        格式:node.removeEventListener()
        参数
            第一个参数:事件类型
            第二个参数  删除函数名字
3.低版本函数
    attachEvent()和detachEvent()

例子1:
1.传统的事件绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function(){
            var oBtn1 = document.getElementById("btn1");
            oBtn1.onclick = function(){
                alert("点击");
            }
            oBtn1.onclick = function(){
                alert("点击2");
           }
        }
    </script>
</head>
<body>
    <button id="btn1">点击</button>
</body>
</html>

运行结果: 可以看到重复添加事件,后面是事件会覆盖前面的事件
在这里插入图片描述
2.用事件监听器绑定事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function(){
            var oBtn1 = document.getElementById("btn1");
            oBtn1.addEventListener("click",function(){
                alert("点击1");
            },false);
            oBtn1.addEventListener("click",function(){
                alert("点击2");
            },false);
        }
    </script>
</head>
<body>
    <button id="btn1">点击</button>
</body>
</html>

运行结果: 可以看到添加事件监听器后事件被依次执行

在这里插入图片描述
例子二:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function(){
            var aBtns = document.getElementsByTagName("button");
            // 传统写法
            /* aBtns[1].onclick = function(){
                alert("原有的点击函数");
            }

            //下标为0
            aBtns[0].onclick = function(){
                aBtns[1].onclick = show;
            }

            //取消下标为1按钮上的函数
            aBtns[2].onclick = function(){
                aBtns[1].onclick = null;
            } */

			//事件监听写法
            aBtns[1].addEventListener("click",function(){
                alert("原有的点击函数");
            },false);

            aBtns[0].onclick = function(){
                aBtns[1].addEventListener("click",show,false);
            }

            aBtns[2].onclick = function(){
                aBtns[1].removeEventListener("click",show);
            }
            function show(){
                alert("hello world");
            }
        }
    </script>
</head>
<body>
    <button>添加函数</button>
    <button>按钮</button>
    <button>删除函数</button>
</body>
</html>

运行结果对比:
1.传统写法
在这里插入图片描述
2.事件监听写法
在这里插入图片描述

拓展:

 //事件监听器的兼容
 function addEvent(node,evenType,funcName){
     if(node.addEventListener){
         node.addEventListener(evenType,funcName,false);
     }else{
         node.attachEvent("on" + evenType,funcName);
     }
 }

 function removeEvent(node,eventType,funcName){
     if(node.removeEventListener){
         node.removeEventListener(eventType,funcName);
     }else{
         node.detachEvent("on" + eventType , funcName);
     }
 }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方求败、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值