getElementById()里面For循环不工作

时间:2013-12-30 15:07:37

标签: javascript

我有一个包含39个文本输入字段的表单。他们的id是input1,input2 ... input39。我想要做的是,如果他们中的任何一个不包含任何值,那么我的脚本将删除它没有问题。问题是,当我逐个检查这些文本字段的值时,它工作正常但是当我使用循环时它显示错误。所以我在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(...)为null

任何想法为什么会这样?所有文本框的默认值都是“”(空字符串)..

2 个答案:

答案 0 :(得分:1)

在你的循环中的某个地方,你正在调用一个不存在的ID。确保您的输入ID符合您的预期,并确保您的循环在适当的时间结束。例如,如果您有要输入的ID38,请确保您的循环不会转到input39。并确保循环的每次迭代都有ID(例如input1 - 38)。

答案 1 :(得分:-1)

首先,您必须将for循环的限制设置为40或&lt; = 39以包含第39个元素。

试试这个:

for (var i=1;i<=39;i++) {
    var asd = 'input' + i;
    var test = document.getElementById(asd).value;
    test;
}