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++; }