控制台抛出错误:P[i].appendChild is not a function
。
如果我使用简单的&#34; for循环&#34;则不会出现错误。 for( var i=0 ; i<P.length ; ++i )
- 而不是&#34; for-in循环&#34;
HTML:
<div id="container">
<div class="parent"></div>
<div class="parent"></div>
<div class="parent"></div>
</div>
使用Javascript:
var P = document.getElementsByClassName("parent");
for (var i in P){
var Child = document.createElement("div");
Child.class = "child";
P[i].appendChild(Child);
}
为什么我不能使用&#34; for-in&#34;和&#34; .appendChild()&#34;在同一时间?
答案 0 :(得分:3)
方法getElementsByClassName
does not return an array,因此copy
是一个对象,而不是一个数组。具体来说,它是HTMLCollection,其属性不仅仅是节点,因此这些属性没有方法。
您可以在下面的示例中看到。
P
&#13;
var P = document.getElementsByClassName("parent");
for (var i in P){
var output = document.createElement('div');
output.innerHTML = "Checking for appendChild on property '" + i + "' on the collection: " + typeof P[i].appendChild;
document.body.appendChild(output);
}
&#13;