为什么当选择不正确的无线电选项时,if语句中的 else 仍会出现?只有在未选择单选按钮时才会出现 else 部分。真正的结果是下一个问题和可能的答案出现。继承人jsfiddle。我做错了什么?
function checkAnswer(){
submit.onclick = function(){
var radios = document.getElementsByName('choices');
var i = 0;
var len = radios.length;
while(i<len){
if(radios[i].checked){
if(radios[i].id == allQuestions[0].correctAnswer){
userScore++;
alert("curent score:" + userScore);
break;
}
}else{
alert("Please selected an option");
break;
}
i++
}
}
}
答案 0 :(得分:3)
您循环播放所有单选按钮。如果超过1,则保证其中至少有一个未被选中,因此您将进入else
。试试这个:
function checkAnswer(){
submit.onclick = function(){
var radios = document.getElementsByName('choices');
var i = 0;
var len = radios.length;
var foundSelected = false;
while(i<len){
if(radios[i].checked){
foundSelected = true;
if(radios[i].id == allQuestions[0].correctAnswer){
userScore++;
alert("curent score:" + userScore);
break;
}
}
i++
}
if (!foundSelected)
alert("Please selected an option");
}
}
答案 1 :(得分:2)
else
指的是
if(radios[i].checked){
只要没有选中单选按钮,就会触发。这在逻辑上与没有选中的单选按钮不同。
答案 2 :(得分:0)
假设未选择第一个单选按钮。然后,在while循环的第一次迭代中,radios[i].checked
将为false并且循环中断。
要检查是否选择了任何按钮,您应该这样做:
function checkIfSelected() {
var i = 0;
while (i < len) {
if (radios[i].checked) {
return true;
}
}
return false;
}
如果选中任何按钮,则此函数返回。在继续之前调用它。