javascript - 如何恢复按钮颜色?

标签 javascript html css

我正在尝试编写简单的 JS 代码来实现多项选择题。我已经能够将按钮颜色更改为红色或绿色,具体取决于是否选择了正确的答案,但是我想确保当单击单独的答案时,其余按钮将恢复为原始颜色。我正在尝试用 for 循环来做到这一点。根据开发工具,代码中似乎没有错误,但当单击正确答案后,红色按钮只会保持红色。我哪里出错了?

<!-- revert button colors (#d9edff) using the variables unclicked and doc query selector-->
document.addEventListener('DOMContentLoaded', function(){
  let correct = document.querySelector(".correct_answer");
  correct.addEventListener('click', function() {
    correct.style.backgroundColor = 'green';
    let correct_feedback = document.querySelector(".feedback");
    correct_feedback.innerText = 'Correct!';
    let unclicked = document.querySelectorAll(".incorrect_answer");
    for (let i = 0; i < unclicked.length; i++){
      unclicked.style.backgroundColor = '#d9edff';
      }
    });
  let incorrects = document.querySelectorAll(".incorrect_answer");
  incorrects.forEach(item => item.addEventListener('click', function(event) {
    let clicked = event.srcElement;
    clicked.style.backgroundColor = 'red';
    let incorrect_feedback = document.querySelector(".feedback");
      incorrect_feedback.innerText = 'Incorrect';
  }));
});
<!DOCTYPE html>
<html lang="en">
  <head>
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500&display=swap" rel="stylesheet">
    <link href="styles.css" rel="stylesheet">
    <title>Trivia!</title>
  </head>
  <body>
    <div class="header">
      <h1>Trivia!</h1>
    </div>

    <div class="container">
      <div class="section">
        <h2>Part 1: Multiple Choice </h2>
        <hr>
        <h3>How many species of Dolphin are there?</h3>
          <button class="correct_answer">42</button>
          <button class="incorrect_answer">53</button>
          <button class="incorrect_answer">24</button>
          <button class="incorrect_answer">11</button>
          <p class="feedback"></p>
      </div>

最佳答案

永远不要对做某事失去希望。对于这个问题,您的代码有点复杂。我选择了 onclick 和 onblur 事件,没有任何循环。但是你的复杂代码肯定会让你成为一个更强大的逻辑构建者。如果你使用 onmouseup onmousedown 事件做同样的事情,你会变得更强大。它会给你比你想象的更多的信心。我们随时为您提供帮助。永远不要失去希望!!

let change1=(event)=>{
    event.target.style.backgroundColor="green"
}
let change2=(event)=>{
    event.target.style.backgroundColor="red"
}
let blur2=(event)=>{
    event.target.style.backgroundColor="white"
}
<div class="header">
    <h1>Trivia!</h1>
</div>
<div class="container">
    <div class="section">
        <h2>Part 1: Multiple Choice </h2>
        <hr>
        <h3>How many species of Dolphin are there?</h3>
            <button id="correct_answer" onclick="change1(event)" onblur="blur2(event)">42</button>
            <button class="incorrect_answer" onclick="change2(event)" onblur="blur2(event)">53</button>
            <button class="incorrect_answer" onclick="change2(event)" onblur="blur2(event)">24</button>
            <button class="incorrect_answer" onclick="change2(event)" onblur="blur2(event)">11</button>
            <p class="feedback"></p>
    </div>
</div>

关于javascript - 如何恢复按钮颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74035470/

相关文章:

jquery - 悬停可点击的图像描述不起作用

css - 谷歌浏览器中的文本字段 CSS 边框行为不当

css - 图片底部的文字

javascript - 化简函数采用未定义的初始值

WebView 中的 JavaScript 不起作用

javascript - 使用javascript替换字符串值并保留部分替换字符串

javascript - 使用书签修改当前页面并访问 iFrame

php - HTML 表单 + PHP、页面重定向

javascript - 将表格中的元素居中对齐

javascript - 保存状态单选按钮javascript-html