首頁 >web前端 >js教程 >為什麼 `forEach` 不能直接在 `HTMLCollection` 上運作?

為什麼 `forEach` 不能直接在 `HTMLCollection` 上運作?

Barbara Streisand
Barbara Streisand原創
2024-12-01 03:01:09554瀏覽

Why Doesn't `forEach` Work Directly on `HTMLCollection`?

使用Array.forEach 迭代HTMLCollection

在這種困境中,開發人員嘗試使用document.getElementsByClassName("myclass").forEach 迭代到錯誤,指出「.forEach 不是

理解HTMLCollection

解決此錯誤的關鍵在於理解getElementsByClassName 傳回結果的性質。微妙但重要的區別。轉換為陣列

要利用強大的forEach 方法,必須先將HTMLCollection 放入陣列中。 call:

使用[].forEach.call:

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

Array.prototype.forEach.call(els, function(el) {
  // Do stuff here
  console.log(el.tagName);
});

使用Array.from (ES6):

[].forEach.call(els, function (el) {...});

透過將HTMLCollection 轉換為數組,可以轉換為數組利用大量的陣列方法(包括forEach)來有效率地處理和操作DOM 元素。

以上是為什麼 `forEach` 不能直接在 `HTMLCollection` 上運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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