首页 > 解决方案 > Javascript - 删除事件监听器的正确方法?

问题描述

如果可能的话,我正在寻找简单的香草 javascript 的答案。我知道使用普通的 javascript 和 var 等是老派,但这是我必须使用的代码。

我有 2 个变量。randomQ是一个具有一些属性的对象,包括.correct. 我的另一个变量answerChoice是 HTML 文件中 4 个<li>元素的节点列表。在我的函数中,我设置了每个li元素的文本内容。然后我为他们创建一个事件监听器。当用户单击其中一个li元素时,我想重置文本内容。但在我重置文本内容之前,我需要使用.removeEventListener(). 这就是我挣扎的地方。

我应该在哪里/如何删除事件侦听器?

这是我的代码,并附有希望澄清事情的评论

var answerChoice = document.querySelectorAll(".answer-choice");    //this is a nodelist of 4 HTML elements


function evaluateUserChoice(randomQ) {
// takes random question created from makeQuestion()
// evaluates if user clicks on correct answer or not

for (var i = 0; i < answerChoice.length; i++) {
    answerChoice[i].addEventListener("click", function(event) {
        var element = event.target;
        //checking to see if user choice is correct
        if (element.textContent === randomQ.correct) {
            score++;
            numberCorrect.textContent = score;
            answerChoice[i].removeEventListener("click",);   // is this where I remove an event listener?
            makeQuestion()                      // resets text content of HTML
        } else {
            answerChoice[i].removeEventListener("click",);    //is this where I remove an event listener?
            makeQuestion();                     // resets text content of HTML
        }    
    });
}

}

标签: javascript

解决方案


推荐阅读