在循环中使用 DOM 时:未捕获的类型错误:无法读取空错误的属性“已检查”

When using DOM within a loop: Uncaught TypeError: Cannot read property 'checked' of null error

本文关键字:错误 属性 读取 已检查 检查 循环 DOM 类型      更新时间:2023-09-26

嗨,如果选中任何单选按钮,我在检查代码时遇到一些问题我得到这个结果: 未捕获的类型错误: 无法读取 null 的属性"选中" 当我运行它时与此相关的代码是:

function validateForm() {
 var msg="";
 var LoE="";
 ...some code
 for (var i=0; i<3; i++) {
 if ((document.getElementById('"LoE" + i').checked)){
     LoE="";
     break;
     }
 Else
     {
      result = false;
      msg+="You need to chose your level of entry";
      }
 }
 ...some more code
}

以及正在检查的单选按钮。它们位于名为 ExamEntry 的表单中

 <tr>
 <td><input type = "radio" name = "LevelOfEntry" id = "LoE0" value = "GCSE">GCSE</td>
 </tr>
 <tr>
 <td><input type = "radio" name = "LevelOfEntry" id = "LoE1" value = "AS">AS</td>
 </tr>
 <tr>
 <td><input type = "radio" name = "LevelOfEntry" id = "LoE2" value = "A2">A2</td>
 </tr> 

感谢您的帮助。

编辑按照注释中的建议删除了单引号,并替换为:

   if ((document.getElementById("LoE" + i).checked)){

现在只得到代码的这一部分未指定的错误:

    Else
     {
      result = false;
      msg+="You need to chose your level of entry";
      }
    }

编辑:解决。非常感谢大家

请注意,我不是 100% 确定您要做什么,但是您在指定单选按钮的数量和使用 ID 而不是名称方面限制了自己。

使用 Jquery 使得使用单选按钮变得更加容易(只是说),或者就这篇文章而言,这是一种更强大的方式:

function get_radio_value() {
    var inputs = document.getElementsByName("selected");
    for (var i = 0; i < inputs.length; i++) {
      if (inputs[i].checked) {
        return inputs[i].value;
      }
    }
}
function onSubmit() {
    var id = get_radio_value();
    alert("selected input is: " + id);
}

请参阅此链接:在操作时获取单选按钮的选定值