DOM2級刪除事件不能直接使用匿名函數。
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); ?//刪除事件無效
2016-07-05
舉報
2017-03-28
很好的解釋,剛剛也是迷惑這件事。
2016-07-05
搞了半天自己百度弄懂了。因為匿名函數看起來是一樣的,其實是兩個不同的對象。
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了。