我已经完成了一项功能,但我不明白为什么,它的一部分不起作用。
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;
答案 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。