Javascript 当使用getElementbyID时,遍历数组返回null
我试图循环遍历一个由六个数字组成的数组,并修改一个相应的表单元素,如下所示Javascript 当使用getElementbyID时,遍历数组返回null,javascript,Javascript,我试图循环遍历一个由六个数字组成的数组,并修改一个相应的表单元素,如下所示 for(var x in numbers) { document.getElementById('r' + numbers[x]).value++; } 但是,这不会更新文本字段,调试器会说类型错误:document.GetElementById(…)为null。但是,下面的代码按预期工作 var t = 25; document.getElementById('r' + t).value++; 有人能解释一下吗?
for(var x in numbers) { document.getElementById('r' + numbers[x]).value++; }
但是,这不会更新文本字段,调试器会说类型错误:document.GetElementById(…)为null
。但是,下面的代码按预期工作
var t = 25;
document.getElementById('r' + t).value++;
有人能解释一下吗?我不是一个真正的javascript程序员,正在从代码示例中拼凑一些东西,我只是不明白为什么第二种情况有效,而第一种情况无效
是的,我尝试了更正确的for(var I=0;I
format;) 直接读取代码:
var numbers = [10,20,30,40];
for(var x in numbers) {
console.log(x); // <-- output 0,1,2,3 (the indexes, not the content)
}
像这样的方法应该会奏效:
<!DOCTYPE html>
<html>
<body>
<input id="sparky1" value="1"><br>
<input id="sparky2" value="3"><br>
<input id="sparky3" value="5"><br>
<input id="sparky4" value="7"><br>
<input id="sparky5" value="9"><br>
<script>
for (var i=1; i < 6; i++) {
document.getElementById('sparky' + i).value = parseInt(document.getElementById('sparky' + i).value) + 1;
}
</script>
</body>
对于(变量i=1;i<6;i++){
document.getElementById('sparky'+i).value=parseInt(document.getElementById('sparky'+i).value)+1;
}
如果jsbin中的设置与您的设置类似,但不起作用……我怀疑您的代码在DOM中找不到元素,您需要在DOM实际加载时运行代码 我认为一个更通用的解决方案可以做同样的事情(将元素增加1)
var formElements = document.forms[0].getElementsByTagName( 'input' );
for (var el of formElements) {
el.value++;
}
数组元素的访问无效,这里是正确的。试试这个
for(var x in numbers) { document.getElementById('r' + x).value++; }
这将很好。Plz还提供您的html和(…in…)的
数字的内容。
与for(var i=…)
不同。一个jsFiddle.net示例会很有用。看起来您的选择器是错误的;但是如果没有html和数字数组…value++,我们就无法知道代码>????那该怎么办?。。。只要您不需要支持IE8,或者愿意/能够使用polyfill添加forEach
,jsbin设置就是我想要的,但在我的脚本中不起作用。我已经在Yes添加了我的代码!谢谢你。如果我读对了,问题似乎是我的6个数字是数组中的第一个元素。啊!
for(var x in numbers) { document.getElementById('r' + x).value++; }