javascript - 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
}
});
}
}
解决方案
推荐阅读
- python - 截断 SVD 和 PCA
- google-apps-script - Apps 脚本检测到具有值的单元格,即使它实际上是空白的
- c# - 为什么它突出显示richTextBox 中的文本,但只突出关键字的一部分?
- python - Webbot 库“单击”功能不适用于复选框
- android - 添加 Reanimated v2 后无法点击查看
- flutter - 在应用程序开始启动时显示灰屏的 Flutter 应用程序
- python - 如何让线程等待符合要求的条件
- javascript - 自动填写表格时如何删除“未定义”?
- java - 未找到处理 Intent 的活动:android.intent.action.EDIT
- c# - 如何通过 wpf 命令传递整数?