.appendchild不是一个函数 - 在" for in"环

时间:2015-09-25 15:27:15

标签: javascript loops dom

控制台抛出错误: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;在同一时间?

1 个答案:

答案 0 :(得分:3)

方法getElementsByClassName does not return an array,因此copy是一个对象,而不是一个数组。具体来说,它是HTMLCollection,其属性不仅仅是节点,因此这些属性没有方法。

您可以在下面的示例中看到。

&#13;
&#13;
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;
&#13;
&#13;