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

时间:2012-04-03 17:27:35

标签: javascript

我正在尝试检查一系列复选框,具体取决于我从字符串中获得的结果。由于此字符串中的值以逗号分隔,因此我执行以下操作:

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 Char:9

我不明白为什么我想要它做的时候会出错。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您很可能拥有在网页上找不到的ID。无论如何,你应该通过添加空检查等来防御性地编码。

尝试这样的事情:

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

    if(checkBox) {
        checkBox.checked = true;
    }
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我认为你的循环正在访问另一个项目而不是真正存在的项目,例如当busLines以','

结尾时