Javascript 为什么addEventListener会立即触发?

Javascript 为什么addEventListener会立即触发?,javascript,Javascript,这已经被问过很多次了,但是在不同的情况下,所以我不太理解前面的答案。这是我的代码: 功能启用编辑(){ var btn=this.event.target; 如果(btn.innerHTML==“编辑”){ document.getElementById(“输出”).innerHTML=“您单击了编辑按钮。更改为更新”; addEventListener(“单击”,函数(){disableEdit(btn);}); btn.innerHTML=“更新”; } else if(btn.inner

这已经被问过很多次了,但是在不同的情况下,所以我不太理解前面的答案。这是我的代码:

功能启用编辑(){
var btn=this.event.target;
如果(btn.innerHTML==“编辑”){
document.getElementById(“输出”).innerHTML=“您单击了编辑按钮。更改为更新”;
addEventListener(“单击”,函数(){disableEdit(btn);});
btn.innerHTML=“更新”;
}
else if(btn.innerHTML==“更新”){
document.getElementById(“输出”).innerHTML=“您单击了更新按钮。更改为编辑”;
btn.innerHTML=“编辑”;
window.removeEventListener(“单击”,禁用编辑);
}
}
功能禁用编辑(btn){
如果(this.event.target!=btn){
如果(btn.innerHTML==“更新”){
document.getElementById(“输出”).innerHTML=“您单击了其他地方。正在恢复编辑”;
btn.innerHTML=“编辑”;
window.removeEventListener(“单击”,禁用编辑);
}
}
}

输出
编辑

制作代码笔更好/etcy您可以使用
.bind()
像这样的
窗口将参数传递给处理程序。addEventListener(“单击”,disableEdit.bind(null,btn))
窗口。代码中的addEventListener
不会立即触发,而是在单击
窗口时触发。请注意,
removeEventListener
无法删除带有匿名函数的侦听器。为了防止其他人遇到这种情况,我发现更好的侦听事件是mouseup。这是因为单击事件注册mousedown和mouseup。当事件侦听器添加到按钮时,第一次单击按钮已经有两个事件:mousedown和mouseup。这就是当鼠标点击时触发该函数的原因。更多信息请点击这里:[链接]