JavaScript事件监听(attachEvent、 addEventListener)

事件监听:同一个事件绑定多个事件处理程序
IE:(IE8及以下查看效果)
对象.attachEvent(‘事件(on)’,‘事件处理程序’) 添加事件
对象.detachEvent(‘事件(on)’,‘事件处理程序’) 删除事件

案例:给一个div绑定两个处理程序,查看执行顺序(需要在IE8下查看效果)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            background: deeppink;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <script>
        var box=document.querySelector('.box');
        box.attachEvent('onclick',aa);
        box.attachEvent('onclick',bb);
        function aa(){
            alert('这个是aa处理程序!');
        }
        function bb(){
            alert('这个是bb处理程序!');
        }
    </script>
</body>
</html>

显示效果:
这里写图片描述

注:事件执行的时候先执行bb后执行的aa

想要删除事件的话可以用detachEvent

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            background: deeppink;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <script>
        var box=document.querySelector('.box');
        box.attachEvent('onclick',aa);
        box.attachEvent('onclick',bb);
        box.detachEvent('onclick',bb);//删除bb处理程序
        function aa(){
            alert('这个是aa处理程序!');
        }
        function bb(){
            alert('这个是bb处理程序!');
        }
    </script>
</body>
</html>

显示效果:
这里写图片描述

说了这个还有一个另外一个事件监听
FF(兼容谷歌、火狐、IE8以上)
addEventListener(‘事件’,‘处理程序’,布尔值) 添加
removeEventListener(‘事件’,‘处理程序’,布尔值) 删除

案例:给一个div绑定两个处理程序,查看执行顺序(IE8以下不支持)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            background: deeppink;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <script>
        var box=document.querySelector('.box');
        box.addEventListener('click',aa,false);
        box.addEventListener('click',bb,false);
        function aa(){
            alert('这个是aa处理程序!');
        }
        function bb(){
            alert('这个是bb处理程序!');
        }
    </script>
</body>
</html>

显示效果:
这里写图片描述

点击div先触发aa,然后触发bb

注意:addEventListener方法可以为当前对象的同一事件,添加多个监听函数,这些函数按照添加的顺序触发,即先添加先触发,如果为同一个事件多次添加同一个监听函数,该函数只会执行一次,多余的添加将自动被去除(不必使用removeEventListener方法手动去除)

案例:删除事件监听

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            background: deeppink;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <script>
        var box=document.querySelector('.box');
        box.addEventListener('click',aa,false);
        box.addEventListener('click',bb,false);
        box.removeEventListener('click',bb,false);//删除bb
        function aa(){
            alert('这个是aa处理程序!');
        }
        function bb(){
            alert('这个是bb处理程序!');
        }
    </script>
</body>
</html>

显示效果这里写图片描述

删除bb后只有aa执行了!!

**事件监听的优点:
1.可以绑定多个事件
2.可以解除相应的绑定**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值