Javascript 循环内部的getElementById()不工作

Javascript 循环内部的getElementById()不工作,javascript,Javascript,我有一个表单,它有39个文本输入字段。他们的ID是input1,input2。。。输入39。我想做的是,如果其中任何一个不包含任何值,那么我的脚本将删除它,这没有问题。问题是,当我逐个检查这些文本字段的值时,它工作正常,但当我使用循环时,它显示错误。因此,我在firebug控制台中运行了一个非常简单的测试 var i=1; var asd=""; asd='input' + i; var test=document.getElementById(asd).value; asd=""; test

我有一个表单,它有39个文本输入字段。他们的ID是input1,input2。。。输入39。我想做的是,如果其中任何一个不包含任何值,那么我的脚本将删除它,这没有问题。问题是,当我逐个检查这些文本字段的值时,它工作正常,但当我使用循环时,它显示错误。因此,我在firebug控制台中运行了一个非常简单的测试

var i=1;
var asd="";

asd='input' + i;
var test=document.getElementById(asd).value;
asd="";
test;
如果我在firebug控制台中运行上述代码,那么它工作正常,显示第一个文本框的值。但是

var i=1;
var asd="";

for(i=1;i<39;i++)
{
    asd='input' + i;
    var test=document.getElementById(asd).value;
    asd="";
    test;
}
如果我运行此代码,则会得到TypeError:document.getElementById。。。是空的


知道为什么会这样吗??所有文本框的默认值均为空字符串。

首先,您必须将for循环的限制设置为40或在循环中的某个位置调用一个不存在的ID。确保您的输入ID是您认为的ID,并确保循环在适当的时间结束。例如,如果您有要输入的ID 38,请确保您的循环不会转到input39。并确保您拥有循环ex.input1-38每次迭代的ID

你确定你真的有39个名字都正确无误?你能告诉我们确切的错误信息吗?test???你想让它做什么?调用值?此外,getElementById可以返回NULL,因此最好不要立即调用它的.value。您确定您有39个名为input1…input39的输入?错误发生在哪一次迭代?在循环的第一行添加一个console.logi,或在问题行之后添加一个console.logtest,这样您就可以看到它在失败之前走了多远。另外,如果您有39个输入,那么您的循环条件需要重新设置,我在JSFIDLE中重新创建了您的问题,但是它似乎工作得很好,这是真的,但没有解释OP得到的错误。您可以发布您正在使用的html代码吗?唯一可以解释的原因是某些输入字段的id错误
for (var i=1;i<=39;i++) {
    var asd = 'input' + i;
    var test = document.getElementById(asd).value;
    test;
}