我有以下代码:
<script type="text/javascript">
for(var i=1; i<=3; i++) {
document.getElementById("items_"+i).checked=true;
}
</script>
使用以下HTML
<input type="checkbox" id="items_1" name="myitems" value="1" />
<input type="checkbox" id="items_2" name="myitems" value="2" />
<input type="checkbox" id="items_3" name="myitems" value="3" />
我收到错误说:
document.getElementById("items_" + i) is null.
我该如何解决这个问题?
答案 0 :(得分:9)
for循环中的第一个索引将为零。
您是否拥有ID为items_0
的元素?
这可能是导致您出现问题的原因。将i
的初始值设置为1
其次,您希望确保在加载DOM后执行您的Javascript代码。
我建议您使用jQuery进行调查,因为这样可以更轻松地完成这些事情。
答案 1 :(得分:1)
答案 2 :(得分:0)
我最终使用了:
$('#items_'+i).attr("checked", true);
答案 3 :(得分:0)
var VanillaRunOnDomReady = function() {
// code to execute after DOM has loaded
for (var i = 1; i <= 3; i++) {
document.getElementById("items_" + i).checked = true;
}
}
var alreadyrunflag = 0;
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", function(){
alreadyrunflag=1;
VanillaRunOnDomReady();
}, false);
}
else if (document.all && !window.opera) {
document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>');
var contentloadtag = document.getElementById("contentloadtag");
contentloadtag.onreadystatechange=function(){
if (this.readyState=="complete"){
alreadyrunflag=1;
VanillaRunOnDomReady();
}
}
}
window.onload = function(){
setTimeout("if (!alreadyrunflag){VanillaRunOnDomReady}", 0);
}