getElementsByClassName() 与 IE 的兼容性
问题:如何有效检索具有特定类的元素数组,考虑到 IE 兼容性限制?
答案:
Document.getElementsByClassName() 是 IE 不支持的现代方法。相反,请考虑以下方法:
自定义函数 (IE6):
定义自定义函数来模拟 getElementsByClassName()。这涉及到遍历 DOM 并根据提供的类名测试元素的类名:
<code class="js">function getElementsByClassName(node, className) { var a = []; var re = new RegExp('(^| )' + className + '( |$)'); var els = node.getElementsByTagName('*'); for (var i = 0, j = els.length; i < j; i++) if (re.test(els[i].className)) a.push(els[i]); return a; } // Usage: var tabs = getElementsByClassName(document.body, 'tab');</code>
querySelectorAll (IE8 ):
如果支持 IE8 或更高版本就足够了,扩展文档和 Element 对象以支持 querySelectorAll():
<code class="js">if (!document.getElementsByClassName) { document.getElementsByClassName = function (className) { return this.querySelectorAll('.' + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; } // Usage: var tabs = document.getElementsByClassName('tab');</code>
确保使用所需节点作为第一个参数调用 getElementsByClassName(),因为它不是文档方法。通过实施这些解决方案之一,您可以按类名检索元素,确保与更广泛的浏览器(包括 IE)兼容。
以上是如何在 Internet Explorer 中按类名检索元素?的详细内容。更多信息请关注PHP中文网其他相关文章!