Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 can';t删除我附加的事件侦听器_Javascript_Addeventlistener_Removeeventlistener - Fatal编程技术网

Javascript can';t删除我附加的事件侦听器

Javascript can';t删除我附加的事件侦听器,javascript,addeventlistener,removeeventlistener,Javascript,Addeventlistener,Removeeventlistener,我在模块中附加了一个事件侦听器,使用 document.addEventListener('keydown', () => this.clickCatcherFunction(target_id)); 但当执行该函数时,该行 document.removeEventListener("keydown", () => this.clickCatcherFunction()); 不会删除侦听器。下次按下某个键时,它将执行ClickCatcher功能,但失败。我如何将创建它时使用的相同

我在模块中附加了一个事件侦听器,使用

document.addEventListener('keydown', () => this.clickCatcherFunction(target_id));
但当执行该函数时,该行

document.removeEventListener("keydown", () => this.clickCatcherFunction());
不会删除侦听器。下次按下某个键时,它将执行ClickCatcher功能,但失败。我如何将创建它时使用的相同函数传递给它以删除它

其他失败的尝试:

document.removeEventListener("keydown", this.clickCatcherFunction());
document.removeEventListener("keydown", clickCatcherFunction());
document.removeEventListener("keydown", clickCatcherFunction);

只能删除命名函数,而不能删除匿名函数,因为即使生成相同的匿名函数,它也不会与先前添加的函数的实例完全相同。您必须单独设置函数,如下所示:

function clickCather(evt){
  .  .  .
}
然后您可以使用
addEventListener(“单击”,clickCatcher)
removeventlistener(“单击,clickCatcher”)添加和删除它

请注意,使用
addEventListener
removeEventListener
时,您不调用函数(函数名称末尾没有括号),您只想引用它。