使用数组与循环实现JS答题功能:无法逐个显示题目问题咨询
问题核心原因
- 你写的for循环是同步执行逻辑,运行时会直接遍历完所有题目一次性输出,不会等待用户回答完成再加载下一题,这是题目无法逐个显示的核心原因
console.log()仅支持控制台内容打印,无法接收用户输入,你定义的answer变量实际取值为undefined,永远无法匹配正确答案的判断分支
可直接运行的实现方案
浏览器环境下可以用prompt()获取用户输入,用递归逻辑代替for循环控制答题流程,完美匹配你要的交互逻辑:
let questions = [ ["1. 美国现任总统是谁? ", "Joe Biden"], ["2. 判断对错:60分钟等于1小时? ", "True"], ["3. 一年有多少个月? ", "12"] ]; let correctAnswers = 0; // 记录当前答题进度 let currentQuestionIndex = 0; // 加载下一题的逻辑 function loadNextQuestion() { // 所有题目作答完毕,展示最终结果 if (currentQuestionIndex >= questions.length) { alert(`答题结束,共答对${correctAnswers}道题`); return; } // 展示当前题目,获取用户输入 const userInput = prompt(questions[currentQuestionIndex][0]); // 答案判断 if (userInput === questions[currentQuestionIndex][1]) { alert("回答正确"); correctAnswers++; } else { alert(`回答错误,正确答案为:${questions[currentQuestionIndex][1]}`); } // 进度加1,加载下一题 currentQuestionIndex++; loadNextQuestion(); } // 启动答题程序 loadNextQuestion();
如果是Node.js环境开发,需要引入内置readline模块处理异步用户输入,核心逻辑同样是用递归控制出题顺序,不要使用同步for循环即可实现题目逐个展示的效果。
内容的提问来源于stack exchange,提问作者Jeanie Farrell
相关产品推荐
相关产品推荐

