Как я могу настроить таргетинг на диапазон по его имени класса?

#javascript

#javascript

Вопрос:

Мне нужен innerHTML некоторых span, у которых нет уникального идентификатора, но у них есть уникальные классы

Я хочу сделать что-то вроде var1 = document.getElementByCLASSNAME('')

Редактировать:

Я не могу использовать Jquery, черт возьми, я даже не могу присвоить элементам идентификаторы propper. длинная история

Ответ №1:

 document.getElementsByClassName = function(className)
{
    var hasClassName = new RegExp("(?:^|\s)"   className   "(?:$|\s)");
    var allElements = document.getElementsByTagName("*");
    var results = [];
    var element;
    for (var i = 0; (element = allElements[i]) != null; i  ) {
        var elementClass = element.className;
        if (elementClass amp;amp; elementClass.indexOf(className) != -1 
            amp;amp; hasClassName.test(elementClass))
            results.push(element);
    }

    return results;
}
  

Основываясь на этом сообщении на devshed: Получить все элементы класса ‘abc’

Комментарии:

1. @hunter — Почему не самый простой способ? Почему не jquery?

2. @Naveed Ahmad, запрашивающий указал JS, а не jQuery.

3. @Naveed — этот вопрос был помечен javascript не jQuery

4. Этот код следует правильному принципу: проверяет, существует ли собственное getElementsByClassName, и определяет его, если его нет. Однако способ привязки кода к событию onload ужасен и не позволит вам использовать функцию до того, как произойдет onload. Лучшим решением было бы var getByClass = document.getElementsByClassName || ... the custom function ...

5. Спасибо охотнику. Как мне использовать эту функцию, я ее не понимаю

Ответ №2:

Существует getElementsByClassName метод (поддерживаемый последними версиями основных браузеров), который возвращает список всех элементов с указанным классом. Конечно, у многих пользователей все еще есть старые браузеры, поэтому более простым решением является использование библиотеки, такой как jQuery, и выбор элементов с помощью $('.someclass') .

Ответ №3:

Использование getElementsByClassName может вызвать проблемы с версиями IE. querySelectorAll должен быть более широко совместим. т.е. document.querySelectorAll(‘.my-class’) или document.querySelectorAll(‘div.my-class’)