简体   繁体   English

删除 Function 内部的事件侦听器

[英]Removing Event Listeners Inside of a Function

I've got two vote buttons (yes/no), each with an event listener.我有两个投票按钮(是/否),每个按钮都有一个事件监听器。 If they click no, I want to remove the yes.如果他们单击否,我想删除是。 But that removeEventListener within the voteNo function appears to not be removing the voteYes listener.但是 voteNo function 中的 removeEventListener 似乎没有删除 voteYes 监听器。

Any idea what I'm doing wrong?知道我做错了什么吗? Thanks in advance!提前致谢!

document.getElementById("voteButtonYesID").style.display = "inline";
document.getElementById("voteButtonNoID").style.display = "inline";
        // listen for the no click
document.getElementById('voteButtonNoID').addEventListener('click', (e) => voteNo(e, direction),{once: true});

        // listen for the yes click
document.getElementById('voteButtonYesID').addEventListener('click', (e) => voteYes(e, direction),{once: true});


    function voteNo(e, direction) {
        e.preventDefault();
        // clear the voting buttons
        document.getElementById("voteMessageID").style.display = "none";
        document.getElementById("voteButtonYesID").style.display = "none";
        document.getElementById("voteButtonNoID").style.display = "none";

        document.getElementById('voteButtonNoID').removeEventListener('click', voteNo);
        document.getElementById('voteButtonYesID').removeEventListener('click', voteYes);

You never assigned voteNo as an event listener, you assigned anonymous function (e) => voteNo(e, direction)您从未将voteNo分配为事件侦听器,您分配了匿名 function (e) => voteNo(e, direction)

You would have to declare this function before您必须先声明此 function

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM