我正在尝试删除input
元素的事件。
我有以下
//add mouse up event on all element under mainDiv
addEvent('mainDiv', 'onmouseup', mouseUpFun);
//search all the input elements and remove the mouse up event
inputs = document.getElementsByTagName('input');
for(var i; i < inputs.length; i++){
var input = inputs[i];
input.removeEventListener('onmouseup');
}
上述代码不起作用且仍附加onmouseup
事件。
任何人都可以帮我解决这个问题吗?非常感谢!
答案 0 :(得分:3)
嗯,一个原因可能是你的循环永远不会运行。您需要在循环中初始化i
:
for(var i = 0; i < inputs.length; i++){
var input = inputs[i];
input.removeEventListener('onmouseup');
}
否则,由于i
的初始值为undefined
,此循环将永远不会运行。
您对removeEventListener
的来电也无法按预期方式运作。您还需要提供对所使用的侦听器/处理程序的引用。
有关removeEventListener
的正确用法,请参阅here。
如果所有内容都使用mouseUpFun
,您可以将其提供给removeEventListener
:
input.removeEventListener('onmouseup', mouseUpFun);
答案 1 :(得分:0)
请参阅https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener
使用removeEventListener
时,需要引用要删除的侦听器函数。
然后,你可以:
addEvent
功能,您可以保存添加的侦听器的引用或