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中文網其他相關文章!