验证 2 组或更多组单选按钮,每组包含 4 个单选按钮

Validation of 2 or more groups of radio buttons each containing 4 radios

所以我不得不将这部分包含在我们的一个 class 项目中。我们被要求创建一个带有收音机和复选框的测验网页,然后编写一个 JavaScript 函数来验证收音机。现在,我知道这些无线电可以由每个组的循环中的个人轻松验证,但是当我的代码中有大量这些组时,这听起来不切实际。所以我尝试了以下代码:-

function quizRadioFilled() 
{
    var check = false;
    var c = 0;
    var x = 0;
    var radiob = [];
    radiob[0] = document.getElementsByName('q1');
    radiob[1] = document.getElementsByName('q2');
    radiob[2] = document.getElementsByName('q3');
    radiob[3] = document.getElementsByName('q4');
    radiob[4] = document.getElementsByName('q5');
    radiob[5] = document.getElementsByName('q9');
    radiob[6] = document.getElementsByName('q10');
    for(var i = 0; i <= 6; i++)
    {
        for(var j = 1; j <= radiob[i].length; j++)
        {
            if(radiob[i].checked)
            {
                c = 1;
                break;
            }
        }
        if(c == 0)          
        {
            check = false;
        }
    }
    if(!check)
    {
        alert('Please attempt all the questions....');
    }
}

我首先将每个组的名称存储在一个数组中。然后循环遍历以验证这些组中的每一个。如果组没有选择单选按钮,我想显示警报。但我没有得到所需的结果。虽然我现在已经完成了这个项目,但我仍然想让这个功能发挥作用。请提供一些建议。

  • 您从未在任何地方将 check 设置为 true,因此它始终为 false。
  • radiob[i] 是一个数组(或者更准确地说,是一个 NodeList),所以 radiob[i].checked 总是未定义的。
  • JavaScript 中的数组从 0 开始索引,这也适用于 NodeList。所以你的 for (var j = 1; j <= radiob[i].length; j++) 循环不正确。

如果您解决了这些问题,那么您的函数应该可以正常工作。