使用javascript的麻烦无法读取属性'value'

时间:2012-10-05 09:17:10

标签: javascript getelementbyid

我已经完成了一项功能,但我不明白为什么,它的一部分不起作用。

Actualy我使用className和Id。

以下是代码的一部分:

 var items = new Array();
 var itemCount = document.getElementsByClassName("items");

 for(var i = 0; i < itemCount.length; i++)
 {
     items[i] = document.getElementById("p"+(i+1)).value;
 }

 return items;
 }

在jsfiddle中显示该Id存在的html部分。

所以不应该向我回复这个错误:

Uncaught TypeError:无法读取null fiddle.jshell.net:402的属性'value'

有关的行如下:

items [i] = document.getElementById(“p”+(i + 1))。value;

3 个答案:

答案 0 :(得分:2)

这意味着:

document.getElementById("p"+(i+1))

在某些循环迭代中返回null。换句话说,该元素不存在。然后尝试从.value检索null属性,这会抛出异常。

<强>更新

如果我正确阅读了代码,则p7缺失。您可以像这样检查:

var elem = document.getElementById("p"+(i+1));
if ( !elem ) {
    alert('p'+(i+1)+' is missing!');
}

答案 1 :(得分:1)

这发生在最后一个元素i + 1上。 所以改变它。

for(var i = 0; i < itemCount.length; i++)
{
alert("i"+i+" "+document.getElementById("p" + (i+1)).value);
 items[i] = document.getElementById("p" + (i+1)).value;
 }

直到第5个元素,即p6。 如图所示,服务器代码本身缺少p7。

答案 2 :(得分:1)

在你的小提琴中,你有缺少id p7的td元素和p8两次。这只是在您的小提琴示例或您的实际代码中吗?如果它也在你的代码中,那么你的问题就出现了。 你必须将其中一个id更正为p7。