使用for循环获取javascript错误,即使它'正在工作

Getting javascript error with a for loop even though it's working

本文关键字:工作 循环 for 获取 javascript 错误 使用      更新时间:2023-09-26

我正试图根据从字符串中获得的结果来检查一系列复选框。由于这个字符串中的值用逗号分隔,我执行以下操作:

var busLines = 'AB, CD, EF, GH, IJ, KL'
var temp = busLines.split(', ');

所以现在我的数组"temp"应该是字符串的各个元素:

temp[0] = 'AB'
temp[1] = 'CD'
temp[2] = 'EF'
and etc...

在我的"temp"数组中返回的每个值都与一个具有相同ID的复选框相对应。因此,当我循环通过并出现值"AB"时,将选中ID="AB"的复选框。

这就是我尝试这个的原因:

for (var i = 0; i < temp.length; i++) {
    document.getElementById(temp[i]).checked = true;
}

当我测试它时,id确实做了我想让它做的事情,但它给了我以下错误:

消息:"document.getElementById(…)"为null或不是对象线路:530字符:9

我不明白为什么当我想让它做的事情奏效时,我会出错。有什么建议吗?

很可能您的ID在页面上找不到。无论如何,您应该通过添加null检查之类的内容来进行防御编码。

试试这样的东西:

for (var i = 0; i < temp.length; i++) {
    var checkBox = document.getElementById(temp[i]);
    if(checkBox) {
        checkBox.checked = true;
    }
}

这意味着你的一个ID不存在(或者字符串末尾可能有一个额外的","。你应该确保所有的ID都存在。如果你只是想忽略这个错误,你可以在try/catch中包装对getElementById的调用。

我认为您的循环访问的项目比实际存在的项目多,例如当busLines以","结束时