btn3.addEventListener('click',function(){alert("this.value");},false); //添加事件有效
btn3.removeEventListener('click',function(){alert("this.value");},false); //删除事件无效
很好的解释,刚刚也是迷惑这件事。
搞了半天自己百度弄懂了。因为匿名函数看起来是一样的,其实是两个不同的对象。
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了。