Javascript 单击时未删除eventListener

Javascript 单击时未删除eventListener,javascript,Javascript,我试图在单击画布元素时删除eventListener: document.getElementById(“画布”) .addEventListener(“单击”,设置路径,错误); 函数setPath(){ 如果(检查){ document.getElementById(“画布”)。 addEventListener(“mousemove”,mouseOverPath,false); }否则{ document.getElementById(“画布”)。 removeEventListener

我试图在单击画布元素时删除eventListener:

document.getElementById(“画布”)
.addEventListener(“单击”,设置路径,错误);
函数setPath(){
如果(检查){
document.getElementById(“画布”)。
addEventListener(“mousemove”,mouseOverPath,false);
}否则{
document.getElementById(“画布”)。
removeEventListener(“mousemove”,mouseOverPath,false);
}
函数mouseOverPath(事件){
drawLine.x=event.clientX;
drawLine.y=event.clientY;
drawLine.draw();
}
}
document.getElementById(“画布”)。
addEventListener(“单击”,()=>{
如果(检查==true){
检查=错误;
}否则如果(检查==false){
检查=正确;
}
},假)

您的问题是在
setPath
中定义了
mouseOverPath

函数setPath(){
如果(检查){
document.getElementById(“canvas”).addEventListener(“mousemove”,mouseOverPath,false);
}否则{
document.getElementById(“canvas”).removeEventListener(“mousemove”,mouseOverPath,false);
}
函数mouseOverPath(事件){
drawLine.x=event.clientX;
drawLine.y=event.clientY;
drawLine.draw();
}

}
您的问题是您在
设置路径中定义了
鼠标路径

函数setPath(){
如果(检查){
document.getElementById(“canvas”).addEventListener(“mousemove”,mouseOverPath,false);
}否则{
document.getElementById(“canvas”).removeEventListener(“mousemove”,mouseOverPath,false);
}
函数mouseOverPath(事件){
drawLine.x=event.clientX;
drawLine.y=event.clientY;
drawLine.draw();
}

}
您确定if语句执行正确吗?setPath函数的变量检查在哪里?我在。check变量在上述范围内。还使用console.logI进行了测试,您可以多次调用
setPath
,以便绑定多个事件。如果看不到如何设置
check
,就很难提供帮助。@epascarello setPath函数只是在上面看到的click事件中执行的。是的,但是如果单击2次且check为true,则会绑定两个click事件。您确定if语句执行正确吗?setPath函数的变量检查在哪里?我在。check变量在上述范围内。还使用console.logI进行了测试,您可以多次调用
setPath
,以便绑定多个事件。看不到如何设置
check
,很难提供帮助。@epascarello设置路径函数只是在上面看到的单击事件中执行的。是的,但是如果单击两次且检查为true,则绑定两个单击事件。谢谢。那很有效!这也是一个很好的解释好的,谢谢你。那很有效!这也是一个很好的解释