我正在尝试检查一系列复选框,具体取决于我从字符串中获得的结果。由于此字符串中的值以逗号分隔,因此我执行以下操作:
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
我不明白为什么我想要它做的时候会出错。有什么建议吗?
答案 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以','
结尾时