JavaScript Trivia游戏答案判断错误问题排查与修复

心靈之曲
发布: 2025-10-13 08:35:01
原创
675人浏览过

javascript trivia游戏答案判断错误问题排查与修复

本文旨在解决JavaScript Trivia游戏中答案判断始终返回第一个答案为正确的错误。通过分析问题代码,找出`checkAnswer`函数中`currentQuestion`变量的错误使用,并提供修改后的代码示例,帮助开发者理解和修复类似问题,确保Trivia游戏逻辑的正确性。

在开发Trivia游戏时,一个常见的错误是答案判断逻辑不正确,导致无论选择哪个答案,程序总是认为第一个答案是正确的。这通常是因为在答案检查函数中,对当前问题的索引处理不当。以下将详细分析问题原因,并提供解决方案。

问题分析

在提供的代码片段中,checkAnswer函数存在一个关键错误:

立即学习Java免费学习笔记(深入)”;

function checkAnswer(bntIndex) {
  nextButton.classList.remove('hide');
  const currentQuestion = 0; // 错误:总是使用第一个问题
  answer = questions[currentQuestion].answers[bntIndex];
  if(answer.correct === true) {
    incrementPoints();
    result.textContent = "Correct!";
  } else {
    result.textContent = "Incorrect";
  }
}
登录后复制

该函数定义了一个常量 currentQuestion 并将其赋值为 0。这意味着无论用户点击哪个答案按钮,checkAnswer 函数总是会检查 questions 数组中第一个问题的答案,导致只有第一个问题的第一个答案才会被判定为正确。

解决方案

要解决这个问题,需要将 currentQuestion 变量替换为实际当前问题的索引。由于 randomQuestion 变量在 nextQuestion 函数中存储了当前问题,因此可以直接使用 randomQuestion 来访问当前问题的答案。

AI建筑知识问答
AI建筑知识问答

用人工智能ChatGPT帮你解答所有建筑问题

AI建筑知识问答 22
查看详情 AI建筑知识问答

修改后的 checkAnswer 函数如下:

function checkAnswer(bntIndex) {
  nextButton.classList.remove('hide');
  // const currentQuestion = 0; // 删除此行
  answer = randomQuestion.answers[bntIndex]; // 使用 randomQuestion
  if(answer.correct === true) {
    incrementPoints();
    result.textContent = "Correct!";
  } else {
    result.textContent = "Incorrect";
  }
}
登录后复制

完整代码示例 (包含上下文)

为了更好地理解修改后的代码,这里提供一个包含上下文的完整示例:

<!DOCTYPE html>
<html>
<head>
<title>Trivia Game</title>
</head>
<body>
  <div id="question-container">
    <div id="question"></div>
    <div id="answers">
      <button id="answers-btn-1" onclick="checkAnswer(0)" class="answers-btn"></button>
      <button id="answers-btn-2" onclick="checkAnswer(1)" class="answers-btn"></button>
      <button id="answers-btn-3" onclick="checkAnswer(2)" class="answers-btn"></button>
      <button id="answers-btn-4" onclick="checkAnswer(3)" class="answers-btn"></button>
    </div>
    <button id="next-button" class="hide">Next</button>
    <div id="result"></div>
  </div>

  <script>
    const questionText = document.getElementById('question');
    const answersContainer = document.getElementById('answers');
    const nextButton = document.getElementById('next-button');
    const result = document.getElementById('result');

    let questions = [
      {
        question: '10 + 5 equals:',
        answers: [
          { text: '5', correct: false },
          { text: '10', correct: false },
          { text: '20', correct: false },
          { text: '15', correct: true }
        ]
      },
      {
        question: '2 + 2 equals:',
        answers: [
          { text: '3', correct: false },
          { text: '4', correct: true },
          { text: '5', correct: false },
          { text: '6', correct: false }
        ]
      }
    ];

    let randomQuestion;

    nextButton.addEventListener('click', nextQuestion);

    function startGame() {
      nextQuestion();
    }

    function nextQuestion() {
      nextButton.classList.add('hide');
      randomQuestion = questions[Math.floor(Math.random()*questions.length)];
      questionText.textContent = randomQuestion.question;
      randomQuestion.answers.forEach((answer, index) => {
        document.getElementById(`answers-btn-${index + 1}`).textContent = answer.text;
        result.textContent = "";
      });
    }

    function checkAnswer(bntIndex) {
      nextButton.classList.remove('hide');
      // const currentQuestion = 0; // 删除此行
      answer = randomQuestion.answers[bntIndex]; // 使用 randomQuestion
      if(answer.correct === true) {
        incrementPoints();
        result.textContent = "Correct!";
      } else {
        result.textContent = "Incorrect";
      }
    }

    function incrementPoints() {
      // 在这里实现你的积分逻辑
      console.log("Correct answer!");
    }

    startGame();
  </script>
</body>
</html>
登录后复制

注意事项

  • 确保 randomQuestion 在 checkAnswer 函数被调用时已经正确赋值。
  • incrementPoints 函数需要根据你的游戏逻辑进行实现。
  • 这个例子只是一个基础框架,可以根据需求进行扩展和优化。

总结

通过移除 checkAnswer 函数中错误的 currentQuestion 变量,并使用 randomQuestion 来访问当前问题的答案,可以解决Trivia游戏中答案判断错误的问题。在开发过程中,仔细检查变量的作用域和赋值,可以避免类似错误的发生。 调试是软件开发过程中必不可少的一环, 善于利用 console.log 等工具可以帮助我们快速定位和解决问题。

以上就是JavaScript Trivia游戏答案判断错误问题排查与修复的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号