首頁 >web前端 >js教程 >為什麼 JavaScript 中 `getElementsByClassName` 不回傳數組?

為什麼 JavaScript 中 `getElementsByClassName` 不回傳數組?

Linda Hamilton
Linda Hamilton原創
2024-12-06 12:23:15719瀏覽

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

getElementsByClassName 傳回HTMLCollection,而不是陣列

在JavaScript 中,document.getElementsByClassName 方法名稱與指定的類別相符。然而,這個集合不是一個數組,而是一個 HTMLCollection

在現代瀏覽器(Firefox 3 及更高版本)中,Array.forEach 方法可以透過設定 this 與 HTMLCollection 一起使用forEach 函數的值傳遞給 HTMLCollection。操作方法如下:

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
});

使用ES6 的更現代方法是使用Array.from 將HTMLCollection 轉換為實際陣列:

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

透過設定this 值或使用Array.from,您可以使用forEach 方法迭代HTMLCollection,就好像它是一個陣列一樣。請注意,Internet Explorer 8 及更低版本等較舊的瀏覽器不支援此方法,並且將傳回 NodeList 而不是 HTMLCollection。

以上是為什麼 JavaScript 中 `getElementsByClassName` 不回傳數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn