2014-01-27 2 views
0

Это, кажется, не работает в ie7 и ie8, есть ли для этого простое исправление?Javascript не отображается в Internet Explorer 7 и 8

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' не поддерживается ниже IE9. – j08691

+4

['getElementsByClassName'] (https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName) минимальная версия с поддержкой IE9 Shim http://stackoverflow.com/questions/16777885/get -all-elements-by-classname-and-change-classname/16778755 # 16778755 – Xotic750

ответ

0

Попробуйте использовать: Var collapsables = document.querySelector; ('разборный.)

querySelector поддерживается IE8

Но если вам нужно IE7, попробуйте использовать грязный хак:

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

Медленный по сравнению с нативным методом. Но в среднем 300сот/сек для меня много. – Xotic750

0

Держу пари, что это будет закрыто, потому что это довольно скоро, но Web_Designer имеет хорошее рабочее решение, размещенное here.

Web_Designers решение для версий IE до 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; 
} 

Использование:

var tabs = getElementsByClassName(document.body,'collapsable'); 
Смежные вопросы