有关于addEventListener以及removeEventListener的相关问题

之前在编写js代码时经常容易爆出 cannot read property "....." of null 这种叫“捕获类型错误”,一般往往是因为编写人员粗心大意捕获错了对象所导致的,或是在捕获时类型错误。

addEventListener主要解决了js中需要触发多个函数而被创造出来的,
其中包含三个参数 addEventListener( “触发事件”,”需要运行的函数名”,”是否需要阻止冒泡 (默认为阻止冒泡事件)”)

<div id="clicks">请点击我</div>

<style>
    #clicks{
          width: 200px;
          height: 30px;
          text-align: center;
          line-height: 30px;
          text-align: center;
          margin: 0 auto;
          border: 1px red solid;
      }
</style>

<script>
    var y=document.getElementById("clicks");
    y.addEventListener("click",fun);
    y.addEventListener("click",funs);

    function fun(){
        alert("Hello World!")
    }
    function funs(){
        alert("Hello William.Yao")
    }
</script>

这里需要注意的是addEventListener中的触发函数不可加括号,否则就会失效。由于只能写触发函数的函数名,因此如果需要传参就需要用到bind( )事件(IE6、7、8不支持)具体请详见bind、call、apply的详细介绍

<script>
    var y=document.getElementById("clicks");
    y.addEventListener("click",fun.bind());
    y.addEventListener("click",fun.bind());

    function fun(){
        alert("Hello World!")
    }
    function funs(){
        alert("Hello William.Yao")
    }
</script>

addEventListener在IE中会出现不被支持的现象,因此我们需要做一些兼容性处理:

var y = document.getElementById("clicks");

if( y.addEventListener){ //所有主流浏览器,除了 IE 8 及更早 IE版本

    y.addEventListener("click",fun); 

}else if( y.attachEvent){ // IE 8 及更早 IE 版本
    y.attachEvent("onclick",fun);
}

removeEventListener()

此方法旨在移除添加到addEventListener( )中的触发事件。

<style>
    #myDIV 
    {
        background-color: coral;
        border: 1px solid;
        padding: 50px;
        color: white;
    }
</style>

<div id="myDIV"> div 元素添加了  onmousemove 事件句柄,在你移动鼠标时会显示随机数。
    <p>点击按钮移除 DIV 的事件句柄。</p>
    <button onclick="removeHandler()" id="myBtn">点我</button>
</div>
<p id="demo"></p>

<script>
    document.getElementById("myDIV").addEventListener("mousemove", myFunction);
    function myFunction() 
    {
          document.getElementById("demo").innerHTML = Math.random();
    }
          function removeHandler() 
    {
          document.getElementById("myDIV").removeEventListener("mousemove", myFunction);
    }
</script>

IE兼容性写法:

var x = document.getElementById("myDIV");
if (x.removeEventListener) {                   // // 所有浏览器,除了 IE 8 及更早IE版本
    x.removeEventListener("mousemove", myFunction);
} else if (x.detachEvent) {                   // IE 8 及更早IE版本
    x.detachEvent("onmousemove", myFunction);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
addEventListenerremoveEventListenerJavaScript中用于添加和移除事件监听器的方法。在Vue.js 2中,可以使用这两个方法来处理DOM事件。 addEventListener用法: addEventListener方法用于向指定的元素添加事件监听器。它接受两个参数:事件类型和事件处理函数。 示例代码: ```javascript // 获取元素 const button = document.querySelector('#myButton'); // 添加点击事件监听器 button.addEventListener('click', handleClick); // 事件处理函数 function handleClick() { console.log('按钮被点击了!'); } ``` 在上面的示例中,我们通过querySelector方法获取了一个id为"myButton"的按钮元素,并使用addEventListener方法为该按钮添加了一个点击事件监听器。当按钮被点击时,会触发handleClick函数,并在控制台输出"按钮被点击了!"。 removeEventListener用法: removeEventListener方法用于从指定的元素中移除事件监听器。它接受两个参数:事件类型和事件处理函数。 示例代码: ```javascript // 获取元素 const button = document.querySelector('#myButton'); // 移除点击事件监听器 button.removeEventListener('click', handleClick); // 事件处理函数 function handleClick() { console.log('按钮被点击了!'); } ``` 在上面的示例中,我们使用removeEventListener方法从按钮元素中移除了之前添加的点击事件监听器。这样,当按钮被点击时,不再触发handleClick函数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值