Javascript IE和getElementsByClassName问题

时间:2009-08-15 01:24:07

标签: javascript ajax internet-explorer

首先,我正在学习JS,在我知道所有需要之前不会使用库。

http://www.tombarrasso.com/search/

这说明为什么我的代码不能用于< IE 7,Firefox< 3等? Safari 4非常完美,Firefox 3.5很棒等等。 我正在使用Robert Nyman的函数getElementsByClassName。

它在OS X上的IE 6(通过Wine)中不会产生任何错误。 Ajax请求很好,但是应该有一个id =“one”和class =“scroller”的初始div,但是没有。 我对此感到非常沮丧。

谢谢,

  • 汤姆

4 个答案:

答案 0 :(得分:8)

..或者您可以将其作为更好的解决方案......

if (typeof document.getElementsByClassName!='function') {
    document.getElementsByClassName = function() {
        var elms = document.getElementsByTagName('*');
        var ei = new Array();
        for (i=0;i<elms.length;i++) {
            if (elms[i].getAttribute('class')) {
                ecl = elms[i].getAttribute('class').split(' ');
                for (j=0;j<ecl.length;j++) {
                    if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) {
                        ei.push(elms[i]);
                    }
                }
            } else if (elms[i].className) {
                ecl = elms[i].className.split(' ');
                for (j=0;j<ecl.length;j++) {
                    if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) {
                        ei.push(elms[i]);
                    }
                }
            }
        }
        return ei;
    }
}

答案 1 :(得分:4)

就个人而言,我只会使用jQuery,因为它已经遇到了您遇到的浏览器兼容性问题。

学习这一切都很好;但是当涉及到处理实现兼容性时,最好让它为你处理,恕我直言。我只关心一些事情:P

答案 2 :(得分:2)

当我们在javascript中使用getElementsByClassName时,IE8会出错 - “对象不支持属性或方法”。试试这个。

if (document.getElementsByClassName) {
    var obj = document.getElementsByClassName('classA');
}

答案 3 :(得分:0)

我使用jQuery来解决我的问题,用ie7来支持那些后向客户端。

<强>旧

var editrow = grid.get_element().getElementsByClassName("rgEditRow")[0];

var editrow = $(".rgEditRow", grid.get_element())[0];