You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在提交后将答题正确的问题设为绿色、错误的设为红色?

实现答题提交后正确/错误题目的颜色高亮

需求说明

提交答题后,将回答正确的题目容器设置为绿色,回答错误(包括未作答)的题目容器设置为红色。

解决方案

通过添加CSS样式类,结合JavaScript判断答题结果,为对应题目容器添加样式类来实现颜色高亮。

1. 样式定义(CSS)

先定义正确和错误状态的样式,确保视觉区分明显:

/* 基础题目容器样式 */
.question {
  margin: 20px 0;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 4px;
}

/* 答对时的样式 */
.question.correct {
  background-color: #d4edda; /* 淡绿色背景 */
  border-color: #c3e6cb; /* 深一点的绿色边框 */
}

/* 答错/未作答时的样式 */
.question.incorrect {
  background-color: #f8d7da; /* 淡红色背景 */
  border-color: #f5c6cb; /* 深一点的红色边框 */
}

2. 修改后的JavaScript逻辑

在原有代码基础上,添加样式类的操作,同时处理重复提交的情况:

document.getElementById("submit-button").addEventListener("click", function() {
    var questions = document.getElementsByClassName("question");
    var totalQuestions = questions.length;
    var correctAnswers = 0;

    for (var i = 0; i < questions.length; i++) {
      var question = questions[i];
      // 先清除之前的样式类,避免多次提交样式叠加
      question.classList.remove("correct", "incorrect");
      
      var selectedOption = question.querySelector("input:checked");

      if (selectedOption) {
        var answer = selectedOption.value;
        var correctAnswer = question.getAttribute("data-correct-answer");
        if (answer === correctAnswer) {
          correctAnswers++;
          // 标记为正确
          question.classList.add("correct");
        } else {
          // 标记为错误
          question.classList.add("incorrect");
        }
      } else {
        // 未选择答案,同样标记为错误
        question.classList.add("incorrect");
      }
    }

    var resultMessage = "你答对了 " + correctAnswers + " 道题,总共 " + totalQuestions + " 道题。";
    alert(resultMessage);
  });

3. 完整HTML示例

将样式、题目和按钮整合在一起:

<style>
.question {
  margin: 20px 0;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 4px;
}
.question.correct {
  background-color: #d4edda;
  border-color: #c3e6cb;
}
.question.incorrect {
  background-color: #f8d7da;
  border-color: #f5c6cb;
}
</style>

<div class="question" data-correct-answer="c">
  <p>问题1:</p>
  <p>2 + 2 的结果是多少?</p>
  <label><input type="radio" name="q1" value="a"> a) 2</label>
  <label><input type="radio" name="q1" value="b"> b) 3</label>
  <label><input type="radio" name="q1" value="c"> c) 4</label>
</div>

<div class="question" data-correct-answer="b">
  <p>问题2:</p>
  <p>以下哪个是JavaScript的循环结构?</p>
  <label><input type="radio" name="q2" value="a"> a) if</label>
  <label><input type="radio" name="q2" value="b"> b) for</label>
  <label><input type="radio" name="q2" value="c"> c) switch</label>
</div>

<button id="submit-button">提交答案</button>

<script>
document.getElementById("submit-button").addEventListener("click", function() {
    var questions = document.getElementsByClassName("question");
    var totalQuestions = questions.length;
    var correctAnswers = 0;

    for (var i = 0; i < questions.length; i++) {
      var question = questions[i];
      question.classList.remove("correct", "incorrect");
      
      var selectedOption = question.querySelector("input:checked");

      if (selectedOption) {
        var answer = selectedOption.value;
        var correctAnswer = question.getAttribute("data-correct-answer");
        if (answer === correctAnswer) {
          correctAnswers++;
          question.classList.add("correct");
        } else {
          question.classList.add("incorrect");
        }
      } else {
        question.classList.add("incorrect");
      }
    }

    var resultMessage = "你答对了 " + correctAnswers + " 道题,总共 " + totalQuestions + " 道题。";
    alert(resultMessage);
  });
</script>

关键修改点

  • 新增CSS类区分正确/错误状态的视觉样式
  • 循环处理题目时先清除旧样式类,避免重复提交导致样式混乱
  • 根据答题结果为题目容器添加对应的样式类
  • 处理未作答的情况,统一标记为错误(可根据需求调整逻辑)

内容的提问来源于stack exchange,提问作者P R Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:14:55