class - 对多个按钮事件监听器“单击”或 .onclick 使用相同的类 - 只会工作一次
问题描述
我是 javascript/初学者程序员的新手。我正在做一个测验,当点击答案时,它应该显示“正确”和下一步按钮或“不正确”。在点击回答按钮之前,页面上会隐藏正确/错误的内容。在按下下一个按钮之前,其他问题也会被隐藏 - 然后当前问题将被隐藏并显示下一个问题。
我试图对所有正确的按钮使用一个类,对所有不正确的按钮使用另一个类。我已经能够以多种方式使第一个问题起作用,但是一旦进入下一个问题,按钮就不再起作用。我假设它与事件侦听器或 onclick 只能运行一次有关?我已经搜索了互联网,其他问题的答案都说使用循环和 querySelectorAll,但它仍然只适用于我的第一个问题。我被困住了
HTML:
<div class="question" id = 'q1'>
<p>Are snowflakes pretty?</p> <!--both correct-->
<button class = 'correct'>Yes</button>
<button class = 'correct'>No</button>
<div class = 'correct_answer_block'>
<p class='display_correct_answer'></p>
<button class = 'next_button'>Next</button>
</div>
</div>
<div class="question" id = 'q2'><p>What is her name?</p>
<img src="mad_elf_imgs/elsa-resize.jpg">
<button class = 'incorrect'>Anna</button>
<button class = 'correct'>Elsa</button>
<button class = 'incorrect'>Olaf</button>
<div class = 'correct_answer_block'>
<p class='display_correct_answer'></p>
<button class = 'next_button'>Next</button>
</div>
<div class = 'incorrect_answer_block'>
<p class = "display_incorrect_answer"></p>
</div>
</div>
CSS
#q2, #q3, .next_button {
display: none;
}
JS - 注意不正确的逻辑尚未完成,将按照正确的逻辑建模
/*Correct Variables */
const class_correct = document.querySelectorAll("button[class^=correct]")
/*const class_correct = document.getElementsByClassName("correct")[0] */
const display_correct_answer = document.getElementsByClassName("display_correct_answer")[0]
const next_button = document.getElementsByClassName("next_button")[0]
const correct = document.getElementsByClassName("correct")
/*Incorrect Variables */
const class_incorrect = document.getElementsByClassName("incorrect")[0]
const display_incorrect_answer = document.getElementsByClassName("display_incorrect_answer")[0]
/*Correct Click */
function display_correct() {
display_correct_answer.textContent = 'Correct!'
next_button.style.display = 'block'
}
for (let i = 0; i < class_correct.length; i++) {
class_correct[i].addEventListener("click", display_correct)
}
/* class_correct.forEach((correct_button) => {
correct_button.addEventListener("click",display_correct)}) */
解决方案
推荐阅读
- java - 如何将jtable只有一列数据插入DB mysql?
- matlab - 在matlab中执行多个嵌套for循环是否有更有效的方法?
- rx-java2 - RxJava/RxKotlin:如果一个源完成(不是全部),combineLatest 已经完成
- python - 密码保险库问题,代码未遵循 if 语句
- r - 底部使用grid.arrange和legend时x轴位置不同的问题
- android - 为什么我必须为数据库中的自动递增列创建一个设置器?
- azure - Azure 流量管理器加权路由,有多少重要?
- sql - 按 max(year) 选择一行并按名称分组,但还包括结果集中的其他值
- linux - 未找到 npm 命令“服务”,但已安装
- php - 数据表 createdRow 为所有行应用背景色,尽管设置了要应用哪些行的条件