问答详情
源自:2-3 DOM2级事件处理程序

DOM2级删除事件不能直接使用匿名函数。

btn3.addEventListener('click',function(){alert("this.value");},false); //添加事件有效

btn3.removeEventListener('click',function(){alert("this.value");},false);  //删除事件无效

提问者:bonorise 2016-07-05 00:07

个回答

  • weibo_死去的阿呆_0
    2017-03-28 10:05:48

    很好的解释,刚刚也是迷惑这件事。

  • bonorise
    2016-07-05 00:11:45

    搞了半天自己百度弄懂了。因为匿名函数看起来是一样的,其实是两个不同的对象。

    btn3.addEventListener('click',function(){alert("this.value");},false); 

    btn3.removeEventListener('click',function(){alert("this.value");},false);

    这两行代码中的function(){alert(alert("this.value"));}看上去是同一个东西,实际上是不同的对象,而removeEventListener要求函数必须一样。

    所以addEventListener最好还是用将匿名函数赋值给某个变量

    addEventListener('click',showValue,false);

    removeEventListener('click',showValue,false);

    这样就不会出bug了。