首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript在internet explorer 7和8中不显示

Javascript在internet explorer 7和8中不显示
EN

Stack Overflow用户
提问于 2014-01-27 23:30:39
回答 2查看 83关注 0票数 0

这似乎不适用于ie7和ie8,有没有简单的解决方法?

代码语言:javascript
复制
  var collapsables = document.getElementsByClassName('collapsable');

function unhide(divID) {

  // Hide previous
  for (var i = 0; i < collapsables.length; i++) {
    collapsables[i].className = 'collapsable hidden';
  }

  // Show new
  var item = document.getElementById(divID);
  if (item) {
    item.className = 'collapsable';
  }
}
EN

回答 2

Stack Overflow用户

发布于 2014-01-27 23:39:55

尝试使用: var .collapsable= document.querySelector('.collapsable');

IE8支持的querySelector

但是如果你需要IE7,试着使用肮脏的黑客:

代码语言:javascript
复制
if(document.getElementsByClassName == undefined) { 
   document.getElementsByClassName = function(cl) { 
      var retnode = []; 
      var myclass = new RegExp('\\b'+cl+'\\b'); 
      var elem = this.getElementsByTagName('*'); 
      for (var i = 0; i < elem.length; i++) { 
         var classes = elem[i].className; 
         if (myclass.test(classes)) { 
            retnode.push(elem[i]); 
         } 
      } 
      return retnode; 
   } 
}; 

你应该明白--这是非常慢的操作。此函数迭代所有DOM元素

票数 0
EN

Stack Overflow用户

发布于 2014-01-27 23:43:46

我敢打赌,它很快就会被关闭,因为它很快就会被复制,但Web_Designerhere上发布了一个很好的工作解决方案。

针对IE9之前的IE版本的Web_Designers解决方案:

代码语言:javascript
复制
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;
}

用法:

代码语言:javascript
复制
var tabs = getElementsByClassName(document.body,'collapsable');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21384833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档