向同一类的所有div添加子元素

Gar*_*oss 3 javascript

我正在尝试向具有同一类的所有 div 添加子范围。

我可以通过定位单个元素的 Id 来实现此目的

超文本标记语言

<div id="h1" class="header">Hello </div>
<hr>
<div id="h2" class="header">what about this one </div>
Run Code Online (Sandbox Code Playgroud)

JavaScript

var header = document.getElementById('h1');

var newSpan = document.createElement("span");
header.appendChild(newSpan);
newSpan.innerHTML = "i'm here";
Run Code Online (Sandbox Code Playgroud)

但是当我将其更改为

var header = document.getElementsByClassName('header');
Run Code Online (Sandbox Code Playgroud)

它无法工作。

谁能看到我哪里出错了?

JSFiddle

Pra*_*lan 5

为此,您需要迭代它们,因为getElementsByClassName()返回一个类似于 html 元素集合的数组。您可以使用for循环

var headers = document.getElementsByClassName('header');

for (var i = 0; i < headers.length; i++) {
  var newSpan = document.createElement("span");
  newSpan.innerHTML = "i'm here";
  headers[i].appendChild(newSpan);
}
Run Code Online (Sandbox Code Playgroud)
<div id="h1" class="header">Hello</div>
<hr>
<div id="h2" class="header">what about this one</div>
Run Code Online (Sandbox Code Playgroud)

或者你可以使用Array.prototype.forEachwithcall()来迭代它

var headers = document.getElementsByClassName('header');

[].forEach.call(headers,function(ele) {
  var newSpan = document.createElement("span");
  newSpan.innerHTML = "i'm here";
  ele.appendChild(newSpan);
})
Run Code Online (Sandbox Code Playgroud)
<div id="h1" class="header">Hello</div>
<hr>
<div id="h2" class="header">what about this one</div>
Run Code Online (Sandbox Code Playgroud)

有关迭代检查的更多信息:- HTMLCollection 元素的 For 循环