#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’)