JavaScript中else条件失效:最后一轮判断始终判定错误
问题分析与修复方案
你的代码存在两个核心问题,导致最后一步判断异常:
1. 条件范围错误
第一个判断if(pic_location<9)的范围过小,当pic_location=9时就会进入else分支,而此时你还未处理倒数第二个题目,直接触发错误提示并跳转。应该将条件改为pic_location < 10,让前10个位置(0到9)都走正常的答题逻辑,只有当pic_location=10时才进入结束分支。
2. 最后一步缺失答案判断
在else分支的pic_location==10块中,你仅写了一个无意义的比较语句document.getElementById("choice_1").value==character[numbers[pic_location]];,没有用if包裹做条件判断,导致无法区分答案对错(甚至你描述的“正确被判错”,实际是因为pic_location=9时进入else分支,不满足pic_location==10的条件,直接触发错误提示)。
修复后的代码
function choice1() { if(pic_location < 10) // 修正条件范围,覆盖0-9的答题流程 { if(document.getElementById("choice_1").value == character[numbers[pic_location]]) { window.alert("Guess Correct!"); score = score + 1; document.getElementById("score").innerHTML = score; pic_location = pic_location + 1; // 仅在未到最后一步时更新图片,避免访问数组越界 if(pic_location < 10) { document.getElementById("pic").setAttribute("src", "pictures/" + character[numbers[pic_location]] + ".jpg"); } } else { window.alert("Wrong Answer!"); pic_location = pic_location + 1; if(pic_location < 10) { document.getElementById("pic").setAttribute("src", "pictures/" + character[numbers[pic_location]] + ".jpg"); } } // 未到最后一步时才更新选项和题目序号 if(pic_location < 10) { set_choices(); document.getElementById("qn").innerHTML = pic_location + 1; } } else { // 最后一步添加正确的答案判断逻辑 if(document.getElementById("choice_1").value == character[numbers[pic_location]]) { window.alert("Guess Correct!"); score = score + 1; } else { window.alert("Wrong Guess!"); } window.location = "game3.php"; } }
额外优化点:增加了图片更新的判断,避免当pic_location=10时访问不存在的数组元素导致报错。
内容的提问来源于stack exchange,提问作者chusaurous
相关产品推荐
相关产品推荐

