【发布时间】:2015-11-26 07:52:18
【问题描述】:
谁能说出为什么bt2 事件侦听器没有在if 块中被删除。当我在p 函数中删除事件侦听器时,它会被删除而没有任何错误或错误。我很确定可能存在任何堆栈或范围问题,因为哪个事件侦听器没有被删除,但我不知道那可能是什么。而且我知道事件侦听器没有被删除,因为对bt2 元素的后续点击所有前面的事件侦听器也再次运行,因为同一个函数运行了多次。请告诉我有什么问题。
这是完整的代码:
(function()
{
if(window.addEventListener) window.addEventListener('load',init,false);
function init()
{ var i=0;
var get=document.getElementById('bt1').addEventListener('click',function() { pro(0);},false);
function pro(x)
{ alert('yeah');
if(!x) x=0
if(x!=0) //I dont want to remove event listener in the first time , so i want it to function with the next call to pro,in which the value of x is bigger than 0
{
//alert('right');
document.getElementById('bt2').removeEventListener('click',p,false); //event listener is not getting removed .
}
document.getElementById('bt2').innerHTML='this is a button '+x;
function passTo(y)
{
pro(y);
}
document.getElementById('bt2').addEventListener('click',p,false);
function p()
{ //document.getElementById('bt2').removeEventListener('click',p,false); //here the event listener is getting removed easily
passTo(x+1);
}
}
}
}());
【问题讨论】:
标签: javascript event-handling dom-events