Книга: JavaScript. Подробное руководство, 6-е издание
15.2.4. Выбор элементов по классу CSS
15.2.4. Выбор элементов по классу CSS
Значением HTML-атрибута class
является список из нуля или более идентификаторов, разделенных пробелами. Он дает возможность определять множества связанных элементов документа: любые элементы, имеющие в атрибуте class
один и тот же идентификатор, являются частью одного множества. Слово class
зарезервировано в языке JavaScript, поэтому для хранения значения HTML-атрибута class
в клиентском JavaScript используется свойство className
. Обычно атрибут class
используется вместе с каскадными таблицами стилей CSS, с целью применить общий стиль отображения ко всем членам множества, и мы еще будем рассматривать эту тему в главе 16. Однако кроме этого, стандарт HTML5 определяет метод getElementsByClassName()
, позволяющий выбирать множества элементов документа на основе идентификаторов в их атрибутах class
.
Подобно методу getElementsByTagName()
, метод getElementsByClassName()
может вызываться и для HTML-документов, и для HTML-элементов, и возвращает «живой» объект NodeList
, содержащий все потомки документа или элемента, соответствующие критерию поиска. Метод getElementsByClassName()
принимает единственный строковый аргумент, но в самой строке может быть указано несколько идентификаторов, разделенных пробелами. Соответствующими будут считаться все элементы, атрибуты class
которых содержат все указанные идентификаторы. Порядок следования идентификаторов не имеет значения. Обратите внимание, что и в атрибуте class
, и в аргументе метода getElementsByClassName()
идентификаторы классов разделяются пробелами, а не запятыми. Ниже приводится несколько примеров использования метода getElementsByClassName():
// Отыскать все элементы с идентификатором "warning" в атрибуте class
var warnings = document.getElementsByClassName("warning");
// Отыскать всех потомков элемента с именем "log" с идентификаторами "error"
// и "fatal" в атрибуте class
var log = document.getElementById("log");
var fatal = log.getElementsByClassName("fatal error");
Современные броузеры отображают HTML-документы в «режиме совместимости» или в «стандартном режиме», в зависимости от строгости объявления <!D0C-TYPE>
в начале документа. Режим совместимости поддерживается для сохранения обратной совместимости, и одна из его особенностей состоит в том, что идентификаторы классов в атрибуте class
и каскадных таблицах стилей CSS нечувствительны к регистру символов. Метод getElementsByClassName()
следует алгоритму сопоставления, используемому таблицами стилей. Если документ отображается в режиме совместимости, метод сравнивает строки без учета регистра символов. В противном случае сравнение выполняется с учетом регистра символов.
К моменту написания этих строк метод getElementsByClassName()
был реализован во всех текущих броузерах, за исключением IE8 и более ранних версий. Однако IE8 поддерживает метод querySelectorAll(),
описываемый в следующем разделе, на основе которого можно реализовать метод getElementsByClassName()
.
- Выбор стратегии ценообразования
- Выбор аппаратного обеспечения для InterBase
- Рекомендации по выбору архитектуры: Classic или SuperServer?
- Создание свободно позиционируемых элементов
- Ограничение результатов выборки FIRST
- Выбор спутника жизни
- 1. Унарная операция выборки
- 1. Операция выборки.
- Отчет о выборе ERP-системы
- Добавление, изменение и удаление элементов списка
- Восстановление элементов списка из Корзины
- 2.6.2. Выбор вариантов бронирования услуг контрагентов