0

This seem to no be working in ie7 and ie8, is there a simple fix for this?

  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';
  }
}
  • 4
    `getElementsByClassName` isn't supported below IE9. – j08691 Jan 27 '14 at 15:31
  • 4
    [`getElementsByClassName`](https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName) minimum version with support IE9 Shim http://stackoverflow.com/questions/16777885/get-all-elements-by-classname-and-change-classname/16778755#16778755 – Xotic750 Jan 27 '14 at 15:32

2 Answers2

0

Try to use: var collapsables = document.querySelector('.collapsable');

querySelector supported from IE8

But if you need IE7, try to use dirty hack:

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

You should understand - this is very slow operation. This function iterates all DOM elements

vadim.zhiltsov
  • 9,294
  • 2
  • 15
  • 16
0

I'll bet this will get closed because it is a duplicate pretty soon, but Web_Designer has a nice working solution posted here.

Web_Designers solution for IE versions prior to IE9:

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

Usage:

var tabs = getElementsByClassName(document.body,'collapsable');
Community
  • 1
  • 1
Marco
  • 22,856
  • 9
  • 75
  • 124