javascript - .appendchild 不是函数 - 在 "for in"循环中

标签 javascript loops dom

控制台抛出错误: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/

相关文章:

javascript - 如何将文件上传到 AWS 中的预签名 URL?

javascript - 检查属性与检查函数返回值的性能如何?

javascript - Material UI 自动完成无法将选项参数识别为数组

javascript - 如何使用纯 Javascript 将选中的单选按钮的值存储在本地存储中?

python - 如何将文本中不同行的不同数字相乘

c# - 迭代对象列表并使用字符串获取元素属性

javascript - 如何在没有 Object.keys() 的情况下遍历对象数组?

javascript - 将文本转换为 Canvas 图像,保留格式

python - Python 中的 HTML 结构差异

javascript - 如何合并 2 个 DOM 元素数组