Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么addEventListener会触发事件_Javascript_Addeventlistener_Removeeventlistener - Fatal编程技术网

Javascript 为什么addEventListener会触发事件

Javascript 为什么addEventListener会触发事件,javascript,addeventlistener,removeeventlistener,Javascript,Addeventlistener,Removeeventlistener,addNode_按钮单击事件处理程序正在等待输入以执行某些操作。 但我想通过按esc停止事件侦听器。 我做了一个简化的例子,显示了在keydown中addEventListener会触发“点击”按钮。 我不明白为什么 addNode\u但是.addEventListener('click',addNodeButtclick); 函数addNodeButClick(){ 让value=nodePt_输入值;out1.value=new Date(); 让waitingValue='尝试通过转义停

addNode_按钮单击事件处理程序正在等待输入以执行某些操作。 但我想通过按esc停止事件侦听器。 我做了一个简化的例子,显示了在keydown中addEventListener会触发“点击”按钮。 我不明白为什么

addNode\u但是.addEventListener('click',addNodeButtclick);
函数addNodeButClick(){
让value=nodePt_输入值;out1.value=new Date();
让waitingValue='尝试通过转义停止时钟,然后输入要停止的内容';
函数callMeAgain(){addNode_but.dispatchEvent(新事件('click'))};
开关(值){
案例“”:nodePt_inp.value=waitingValue;
case waitingValue:setTimeout(callMeAgain,100);break;
默认值:out1.value=“仅现在我已停止”;
}
}
文件。addEventListener('keydown',escape);
函数转义(evt){
if(evt.key=='Escape'){
addNode_但是.removeEventListener('click',addNodeButClick);
nodePt_inp.value=“”;
addNode_但是.addEventListener('click',addNodeButClick);
}
}

单击我并尝试按esc停止

输出
为了停止
设置超时
调用,您应该保持对该调用结果的引用,并调用
清除超时

addNode\u但是.addEventListener('click',addNodeButtclick);
var-timerId=null;
函数addNodeButClick(){
让value=nodePt_输入值;out1.value=new Date();
让waitingValue='尝试通过转义停止时钟,然后输入要停止的内容';
函数callMeAgain(){addNode_but.dispatchEvent(新事件('click'))};
nodePt_inp.value=等待值;
timerId=setTimeout(callMeAgain,100);
}
文件。addEventListener('keydown',escape);
函数转义(evt){
if(evt.key=='Escape'){
清除超时(timerId);
}
}

单击我并尝试按esc停止

输出
为了停止
设置超时
调用,您应该保持对该调用结果的引用,并调用
清除超时

addNode\u但是.addEventListener('click',addNodeButtclick);
var-timerId=null;
函数addNodeButClick(){
让value=nodePt_输入值;out1.value=new Date();
让waitingValue='尝试通过转义停止时钟,然后输入要停止的内容';
函数callMeAgain(){addNode_but.dispatchEvent(新事件('click'))};
nodePt_inp.value=等待值;
timerId=setTimeout(callMeAgain,100);
}
文件。addEventListener('keydown',escape);
函数转义(evt){
if(evt.key=='Escape'){
清除超时(timerId);
}
}

单击我并尝试按esc停止

输出
您的问题完全不清楚。您的代码完全按照您的编程方式执行!如果你解释一下你想要实现什么(而不是你认为你是如何实现的),我们可能可以帮助我尝试通过按来停止eventListener(它在循环中)esc@muratgu必须错过中断,该代码没有问题逻辑错误。它不会停止,直到你进入的东西。否则它只会每隔100毫秒呼叫一次。你的问题完全不清楚。您的代码完全按照您的编程方式执行!如果你解释一下你想要实现什么(而不是你认为你是如何实现的),我们可能可以帮助我尝试通过按来停止eventListener(它在循环中)esc@muratgu必须错过中断,该代码没有问题逻辑错误。它不会停止,直到你进入的东西。否则它只会每隔100ms调用一次。非常感谢,我不认为setTimeout“挂起”EventListener您从哪里获得了有关setTimeout和删除事件侦听器的信息?:@IgorFomenko我不明白这些问题中的任何一个-没有挂起,setTimeout没有事件侦听器!但很高兴这对您有所帮助。非常感谢,我不认为setTimeout“挂起”事件监听器您从哪里获得有关setTimeout和删除事件监听器的信息?:@IgorFomenko我不理解这些问题中的任何一个-没有挂起,setTimeout没有事件监听器!但很高兴这对你有帮助。