控制台将引发错误: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/

10-12 07:35
查看更多