JavaScript Document.GETELEMESSYCLASSNAME Совместимость с IE

Какой лучший метод для извлечения массива элементов, которые имеют определенный класс?

Я бы использовал документ. GteelementsByClassname, но IE не поддерживает его.

Итак, я попробовал решение Джонатана Снука :

function getElementsByClassName(node, classname) {
    var a = [];
    var re = new RegExp('(^| )'+classname+'( |$)');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i

... Но то есть все еще говорит:

Объект не поддерживает это свойство или метод

Любые идеи, лучшие методы, исправления ошибок ?

Я бы предпочел не использовать никаких решений с участием jQuery или другого «громоздкого JavaScript».

Обновление:

Я получил его на работу!

AS @JOE упомянуто . Функция не является методом документа .

Итак, рабочий код будет выглядеть так:

function getElementsByClassName(node, classname) {
    var a = [];
    var re = new RegExp('(^| )'+classname+'( |$)');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i


... также Если вам нужно только поддержку IE8 + , то это будет работать:

if(!document.getElementsByClassName) {
    document.getElementsByClassName = function(className) {
        return this.querySelectorAll("." + className);
    };
    Element.prototype.getElementsByClassName = document.getElementsByClassName;
}

Используйте его так же, как обычно:

var tabs = document.getElementsByClassName('tab');

-

75
задан Community 23 May 2017 в 12:32
поделиться