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中文网其他相关文章!