控制台将引发错误:P[i].appendChild is not a function
。
如果我使用简单的“ for循环” for( var i=0 ; i<P.length ; ++i )
-而不是“ for-in循环”,则不会出现该错误
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);
}
为什么我不能同时使用“ for-in”和“ .appendChild()”?
最佳答案
方法getElementsByClassName
does not return an array,因此P
是一个对象,而不是数组。具体来说,它是一个HTMLCollection,具有除节点之外的其他属性,因此这些属性没有该方法。
您可以在下面的示例中看到这一点。
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);
}
<div id="container">
<div class="parent"></div>
<div class="parent"></div>
<div class="parent"></div>
</div>
关于javascript - .appendchild不是函数-在“for in”循环中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32785622/