Heim >Web-Frontend >js-Tutorial >Warum gibt „getElementsByClassName' in JavaScript kein Array zurück?

Warum gibt „getElementsByClassName' in JavaScript kein Array zurück?

Linda Hamilton
Linda HamiltonOriginal
2024-12-06 12:23:15717Durchsuche

Why Doesn't `getElementsByClassName` Return an Array in JavaScript?

getElementsByClassName gibt eine HTMLCollection zurück, kein Array

In JavaScript gibt die Methode document.getElementsByClassName eine Sammlung von DOM-Elementen zurück, die mit den angegebenen übereinstimmen Klassenname. Diese Sammlung ist jedoch kein Array, sondern eine HTMLCollection.

In modernen Browsern (Firefox 3 und höher) kann die Array.forEach-Methode mit einer HTMLCollection verwendet werden, indem dies festgelegt wird Wert der forEach-Funktion zur HTMLCollection hinzufügen. So geht's:

var els = document.getElementsByClassName("myclass");

Array.prototype.forEach.call(els, function(el) {
  // Do something with the element
});

// Or, in ES6+
[].forEach.call(els, (el) => {
  // Do something with the element
});

Ein modernerer Ansatz mit ES6 besteht darin, Array.from zu verwenden, um die HTMLCollection in ein tatsächliches Array umzuwandeln:

Array.from(els).forEach((el) => {
  // Do something with the element
});

Durch Festlegen des this-Werts oder mit Array.from können Sie mit der forEach-Methode über die HTMLCollection iterieren, als wäre sie ein Array. Beachten Sie, dass ältere Browser wie Internet Explorer 8 und niedriger diesen Ansatz nicht unterstützen und eine NodeList anstelle einer HTMLCollection zurückgeben.

Das obige ist der detaillierte Inhalt vonWarum gibt „getElementsByClassName' in JavaScript kein Array zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn