【问题标题】:Javascript IE and getElementsByClassName problems [duplicate]Javascript IE 和 getElementsByClassName 问题 [重复]
【发布时间】:2009-08-15 01:24:06
【问题描述】:

所以首先我正在学习 JS,并且在我知道我需要的一切之前不会使用库。

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

话虽如此,为什么我的代码在

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

谢谢,

  • 汤姆

【问题讨论】:

  • 你能把代码贴出来吗?不知道在哪里可以找到它:D
  • 原来 .setAttribute("class", "scroller") 对某些 IE 来说并不好,所以我还需要 .setAttribute("className", "scroller")。此外,我需要在一行中添加所有 .appendChild(),因为 IE 不会从一个到下一个。但是 IE 8 不像 IE 6 和 7 那样观察这些。
  • 请参阅blogs.msdn.com/ie/archive/2009/03/12/…,了解有关 className 的更改说明。
  • 感谢 Eric Law,这个链接很棒。

标签: javascript ajax internet-explorer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我使用 jQuery 解决了我在支持 ie7 的落后客户端的问题。

        旧:

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

        新功能:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-19
          • 1970-01-01
          • 2020-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-25
          • 2010-11-04
          相关资源
          最近更新 更多