Javascript document.getElementById(“items”x2B;i)为空
我有以下代码:Javascript document.getElementById(“items”x2B;i)为空,javascript,dom,Javascript,Dom,我有以下代码: <script type="text/javascript"> for(var i=1; i<=3; i++) { document.getElementById("items_"+i).checked=true; } </script> 如何修复此问题?for循环中的第一个索引将为零 您是否有id为items\u 0的元素 这很可能是导致你出现问题的原因。将i的初始值设置为1 其次,要确保Javasc
<script type="text/javascript">
for(var i=1; i<=3; i++) {
document.getElementById("items_"+i).checked=true;
}
</script>
如何修复此问题?for循环中的第一个索引将为零 您是否有id为
items\u 0
的元素
这很可能是导致你出现问题的原因。将i
的初始值设置为1
其次,要确保Javascript代码在加载DOM后执行
我建议您考虑使用,因为这样做可以简化此类操作。您的代码看起来像是第一次迭代指向I=0,所以它试图找到id为“items\u 0”的输入标记 下面是一个JSBin,它显示了正确工作的代码: 我最终使用了:
$('#items_'+i).attr("checked", true);
var VanillaRunOnDomReady=函数(){
//加载DOM后要执行的代码
for(var i=1;我还确保在DOM中创建元素后执行脚本。不,没有项0。即使我尝试:for(var i=1;这是一些非常旧的代码,我没有时间转换为jQuery。否则,我会。thxAs只要确保在加载DOM后执行JS,就可以了。(加载DOM后,JSFIDLE自动加载JS部分)这是您的确切代码吗?如果是,您真的需要用JS设置checked属性吗?您之前评论说您没有时间转换为jQuery,但现在您用-*GASP*-jQuery回答您自己的问题!
document.getElementById("items_" + i) is null.
$('#items_'+i).attr("checked", true);
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);
}