相关疑难解决方法(0)

javascript document.getElementsByClassName与IE的兼容性

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

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

所以我尝试了Jonathan Snook的解决方案:

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');
Run Code Online (Sandbox Code Playgroud)

......但IE仍然说:

Object不支持此属性或方法

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

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

更新:

我得到了它的工作!

正如@joe提到的那样,函数不是一种方法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'); …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer class classname internet-explorer-8

75
推荐指数
5
解决办法
8万
查看次数