首頁 > web前端 > js教程 > 為什麼 `document.getElementsByClassName().forEach` 不起作用,如何修復它?

為什麼 `document.getElementsByClassName().forEach` 不起作用,如何修復它?

DDD
發布: 2024-12-06 07:39:11
原創
886 人瀏覽過

Why Doesn't `document.getElementsByClassName().forEach` Work, and How Can I Fix It?

將 Array.forEach 與 getElementsByClassName 結合使用

嘗試使用 document.getElementsByClassName( "Mmyclass" ).Each元素時,一可能會遇到錯誤「document.getElementsByClassName(“myclass”).forEach 不是函數。」出現這種情況是因為 getElementsByClassName 的結果不是數組,而是 HTMLCollection。

要解決此問題,必須在使用 forEach 之前將 HTMLCollection 轉換為陣列。這可以使用Array.prototype.forEach.call 方法和HTMLCollection 作為this 值來完成:

var els = document.getElementsByClassName("myclass");
Array.prototype.forEach.call(els, function(el) {
    // Do stuff here
    console.log(el.tagName);
});
登入後複製

或者,可以使用[].forEach.call:

[].forEach.call(els, function (el) {...});
登入後複製

在ES66中,可以使用Array.from函數:

Array.from(els).forEach((el) => {
    // Do stuff here
    console.log(el.tagName);
});
登入後複製

以上是為什麼 `document.getElementsByClassName().forEach` 不起作用,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板