javascript document.getElementsByClassName 与 IE 的兼容性

标签 javascript internet-explorer class internet-explorer-8 classname

检索具有特定类的元素数组的最佳方法是什么?

我会使用 document.getElementsByClassName 但 IE 不支持它。

所以我尝试了Jonathan Snook's solution :

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;
}
var tabs = document.getElementsByClassName(document.body,'tab');

...但是 IE 仍然说:

Object doesn't support this property or method

任何想法、更好的方法、错误修复?

我宁愿不使用任何涉及 jQuery 或其他“笨重的 javascript”的解决方案。

更新:

我让它工作了!

作为@joe mentioned该函数不是 document 的方法。

所以工作代码看起来像这样:

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;
}
var tabs = getElementsByClassName(document.body,'tab');


...此外,如果您只需要 IE8+ 支持,那么这将起作用:

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

像平常一样使用它:

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

最佳答案

这不是文档的方法:

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;
}

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

关于javascript document.getElementsByClassName 与 IE 的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410949/

相关文章:

python - 如何在 Flask 中为每个用户 session 维护一个类实例?

java - 我如何制作一个 "dice"每次使用它时随机生成一个数字 1-6?

c++ - 模板内模板的typedef

javascript - 交换情况 JavaScript

javascript - 如何动态添加工作 dropify 输入

windows - 在 Internet Explorer 中以编程方式设置 cookie

javascript - IE 焦点后跳转到文本区域的开头

javascript - 使用 javascript/css3/canvas 动画图像/3D/sprite

JavaScript 堆内存不足错误

html - 列表编号的样式在 IE 中不起作用