测验 - 如果声明

时间:2014-10-01 15:46:49

标签: javascript if-statement

为什么当选择不正确的无线电选项时,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++
    }
  }
}

3 个答案:

答案 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;
}

如果选中任何按钮,则此函数返回。在继续之前调用它。