怎么解决?为什么总是‘您还没有选中其中的一项‘


var theRadioInputs = document.getElementsByName('answer');
        for(let m=0;m<theRadioInputs.length;m++)
        {
            if(theRadioInputs[m].checked){
                alert('has been checked');
                return true;
            }else{
                alert('您还没有选中其中的一项');
                return false;
            }

        }

b你这块的逻辑不对,应该先遍历判断是否有选中的,用个临时变量做标识。遍历结束后,判断临时变量的值,根据临时变量的值来判断是否都没选中。


var theRadioInputs = document.getElementsByName('answer');
var flag=false;
for(let m=0;m<theRadioInputs.length;m++){
    if(theRadioInputs[m].checked){
         flag=true;
         break;
    }
}
if(flag){
    alert('has been checked');
    return true;
} else{
    alert('您还没有选中其中的一项');
    return false;
}

在判断一组单选或多选是否有选中项,不应该像你这样在循环内判断

应该是在循环外定义一个变量,表示选中或选中项数量

例如

let selectedItems = 0;
for(let m=0;m<theRadioInputs.length;m++)
        {
            if(theRadioInputs[m].checked){
                selectedItems ++;
                //alert('has been checked');
                //return true;
           // }else{
                //alert('您还没有选中其中的一项');
                //return false;
            }
 
        }
if (selectedItems > 0){
    alert('has been checked');
    return true;
}else{
    alert('您还没有选中其中的一项');
    return false;
}

说明theRadioInputs[m].checked没有等于true的,说明checkbox选中事件赋值问题。

可是我都选择了,然后提交的

你可以打印一下每个循环元素,判断是否选中,应该是有没有checked属性或者checked属性是否为true

从来没有 很少的时候 有些时候 经常这样 总是这样