首页 >web前端 >js教程 >如何在 Internet Explorer 中按类名检索元素?

如何在 Internet Explorer 中按类名检索元素?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 00:48:02958浏览

How to Retrieve Elements by Class Name in Internet Explorer?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn