Javascript removeEventListener的行为

Javascript removeEventListener的行为,javascript,dom-events,Javascript,Dom Events,请检查以下代码: var clickfn = function(){ alert("clicked"); } document.getElementById("div1").addEventListener("click",clickfn,true); clickfn = function(){ }; document.getElementById("div1").remo

请检查以下代码:

var clickfn = function(){
 alert("clicked");                    
}
document.getElementById("div1").addEventListener("click",clickfn,true);
clickfn = function(){  };
document.getElementById("div1").removeEventListener("click");


为什么
removeEventListener
不工作?

removeEventListener
包含两个参数,即要删除的事件和函数。
这应该起作用:

document.getElementById("div1").removeEventListener("click", clickfn);

另外,您正在执行的函数是空的

var clickfn = function(){  };

您必须指定指定给
addEventListener
的确切函数作为第二个参数。如果指定了第三个
useCapture
参数,则还必须指定与
removeEventListener
相同且等效的参数

例如:

function myFunc(event){ alert(event.target.textContent); }

var myElement=document.getElementById('myElement');

//Add EventListener
myElement.addEventListener('click', myFunc, false );

/* ... */

//Remove EventListener
myElement.removeEventListener('click', myFunc, false );


您可以在上找到更多信息。

我最近在ReactJS中遇到了导航栏代码的问题,在y轴上滚动100px后为导航栏提供背景色,如果页面视图在顶部100px范围内,则将其删除

我所要做的就是在removeEventListener中引入一个反向函数,为它提供应用规则

const[show,handleShow]=useState(false);
useffect(()=>{
window.addEventListener('scroll',()=>{
如果(window.scrollY>100){
//这样做
handleShow(真实);
}else handleShow(假);
});
return()=>{
window.removeEventListener('scroll',()=>{
如果(window.scrollY<100){
//这样做
handleShow(假);
}else handleShow(真);
});
};
});

With,需要两个参数;只有第三个参数是可选的。相关:好的,谢谢,我认为removeEventListener(“单击”)会删除所有绑定到它的函数。我的坏消息