为何浏览器仅弹出一个确认框?JavaScript代码问题求助
问题解决:JavaScript仅弹出一个确认框的问题
你的代码有两个核心问题导致只弹出一次确认框:
- 仅执行了一次
quiz()函数:你只在代码末尾调用了一次quiz(),没有循环或递归触发后续的问题弹出。 - 终止条件逻辑错误:
if (index == questions[index])这个判断完全不符合需求——questions[index]是数组里的对象,和数字类型的index永远不可能相等,这个条件根本不会触发,而且也不是用来判断是否还有剩余问题的正确逻辑。
修复后的代码
var questions = [ { text: "Da li je javascript dobar jezik", correctAnswer : true }, { text: "Da li je css programski jezik", correctAnswer : true }, { text: "Da li je php programski jezik", correctAnswer: true } ] var index = 0; var score = 0; function quiz(){ // 判断是否所有问题都已处理完成 if (index >= questions.length) { alert(`你的得分是:${score}/${questions.length}`); return; } var quizQuestion = confirm(questions[index].text); if (quizQuestion === questions[index].correctAnswer){ score++; } index++; // 递归调用函数,处理下一个问题 quiz(); } // 启动问答 quiz();
关键修改说明
- 添加问题完成判断:用
index >= questions.length检查是否所有问题都已处理,完成后弹出最终得分并终止函数。 - 递归触发后续问题:在处理完当前问题、更新
index后,再次调用quiz(),这样就能依次弹出所有问题的确认框。 - 移除错误的终止逻辑:删掉了完全不符合需求的
if (index == questions[index])判断。
这样修改后,浏览器会依次弹出3个确认框,完成所有问题后还会显示你的得分。
内容的提问来源于stack exchange,提问作者nemanja
相关产品推荐
相关产品推荐

