javascript - 按下跨度时显示/隐藏 HTML 文本
问题描述
我试图在按下正确/错误跨度后显示隐藏的答案,同时隐藏问题。我已经设法做到了,但无论我按哪个正确/错误,只会出现第一个答案。
有谁知道如何做到这一点,它只会在按下的正确/错误的 li 中进行更改,而无需为所有内容编写 id="" 。
我有一个代码:
var correct = document.querySelectorAll(".correct");
var wrong = document.querySelectorAll(".wrong");
var answer = document.querySelector(".answer");
var question = document.querySelector(".question");
var display = document.querySelector(".display");
var nodisplay = document.querySelector(".nodisplay");
for (var i = 0; i < correct.length; i++) {
correct[i].addEventListener("click", function () {
question.classList.add("nodisplay");
question.textContent = "";
answer.classList.remove("answer");
answer.classList.add("display");
});
}
for (var i = 0; i < wrong.length; i++) {
wrong[i].addEventListener("click", function () {
question.classList.add("nodisplay");
question.textContent = "";
answer.classList.remove("answer");
answer.classList.add("display");
});
}
.answer {
margin-left: 5px;
display: inline-block;
transition: 0.3s linear;
opacity: 0;
}
.question {
margin-left: 5px;
}
.diplay {
display: inline;
margin-left: 5px;
transition: 0.3s linear;
opacity: 0;
text-align: left;
float: left;
}
.nodisplay {
display: inline-block;
transition: 0.3s linear;
opacity: 0;
}
<div class="cont">
<h1 class="title">1/4 TEST<i class="fab fa-medapps"></i></h1>
<ul>
<li><span class="question">Question1</span><span class="answer">Correct answer is: </span><span class="yesno correct">NO</span><span class="yesno wrong">YES</span></li>
<li><span class="question">Question2</span><span class="answer">Correct answer is: </span><span class="yesno wrong">NO</span><span class="yesno correct">YES</span></li>
<li><span class="question">Question3</span><span class="answer">Correct answer is: </span><span class="yesno wrong">NO</span><span class="yesno correct">YES</span></li>
</ul>
</div>
解决方案
这是一个委托脚本
你可以从那里拿走
document.querySelector(".cont").addEventListener("click", function(e) {
const li = e.target.closest("li");
const parentUL = li.closest("ul");
const yesno = li.querySelector(".yesno")
const correct = parentUL.querySelectorAll(".correct");
const wrong = parentUL.querySelectorAll(".wrong");
const answer = parentUL.querySelector(".answer");
const question = parentUL.querySelector(".question");
const display = parentUL.querySelector(".display");
const nodisplay = parentUL.querySelector(".nodisplay");
if (yesno.classList.contains("correct")) {
question.classList.add("nodisplay");
question.textContent = "Correct";
answer.classList.remove("answer");
answer.classList.add("display");
}
});
.answer {
margin-left: 5px;
display: inline-block;
transition: 0.3s linear;
opacity: 0;
}
.question {
margin-left: 5px;
}
.diplay {
display: inline;
margin-left: 5px;
transition: 0.3s linear;
opacity: 0;
text-align: left;
float: left;
}
.nodisplay {
display: inline-block;
transition: 0.3s linear;
opacity: 0;
}
<div class="cont">
<h1 class="title">1/4 TEST<i class="fab fa-medapps"></i></h1>
<ul>
<li><span class="question">Question1</span><span class="answer">Correct answer is: </span><span class="yesno correct">NO</span><span class="yesno wrong">YES</span></li>
<li><span class="question">Question2</span><span class="answer">Correct answer is: </span><span class="yesno wrong">NO</span><span class="yesno correct">YES</span></li>
<li><span class="question">Question3</span><span class="answer">Correct answer is: </span><span class="yesno wrong">NO</span><span class="yesno correct">YES</span></li>
</ul>
</div>
推荐阅读
- macos - 如何从 Intel Mac 在 Silicon Mac M1 上运行 Dockerfile
- python - 在具有多个网络和方法的模型类上使用 writer.add_graph() 时出现问题,这些网络和方法采用不同的输入
- javascript - 如何在 map() 函数中获取反应道具
- java - Spring也用于前端是否正确?
- sql - 使用 LISTAGG/XMLAGG 未按预期工作
- scrapy - Scrapy 无法解析响应时间较长的页面
- google-cloud-functions - 具有多个 cron 计划的 Cloud Scheduler?
- scala - 如何从 Scala 中的集合列表中删除正确的子集?
- powerbi - 在报告中定义适当度量的问题
- android - Flutter firebase 消息传递在 Android 中给出 registerPlugin 异常