首頁 >web前端 >js教程 >如何在 Internet Explorer 中使用 getElementsByClassName()?

如何在 Internet Explorer 中使用 getElementsByClassName()?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 19:15:02375瀏覽

How to Use getElementsByClassName() in Internet Explorer?

IE 中document.getElementsByClassName 的相容性

嘗試使用文件檢索具有特定類別的元素數組時,Internet Explorer 會遇到挑戰.getElementsByClassName()。為了克服這個限制,需要一個自訂的解決方案。

Jonathan Snook 的方法

在IE 中模擬document.getElementsByClassName() 的一種方法是利用Jonathan Snook 的函數,該函數使用getElementsByTagName(*) 迭代節點內的所有元素,並根據所需類別的存在來過濾它們。

IE 不相容

儘管實現了 Snook 的解決方案, IE 中仍可能出現錯誤,指出「物件不支援此屬性或方法」。這是因為 getElementsByClassName() 不是 IE 中文檔物件的直接方法。

正確的實現

Snook 函數的正確實現需要顯式指定目標節點:

var tabs = getElementsByClassName(document.body, 'tab');

IE8 支持

對於IE8 及更高版本,可以使用簡化的方法:

if (!document.getElementsByClassName) {
    document.getElementsByClassName = function(className) {
        return this.querySelectorAll("." + className);
    };
    Element.prototype.getElementsByClassName = document.getElementsByClassName;
}

此程式碼片段定義getElementsByClassName() 作為文件物件的方法,並透過Element.prototype.getElementsByClassName()使其可供各個元素使用。

用法

一旦實現, getElementsByClassName() 方法可以如下使用:

var tabs = document.getElementsByClassName('tab');

以上是如何在 Internet Explorer 中使用 getElementsByClassName()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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