Spec-Zone.ru › Web APIs

Элемент: метод getElementsByClassName()

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Посмотреть полную совместимость
  • Отправить отзыв

Метод Element getElementsByClassName() возвращает живой HTMLCollection, который содержит каждый дочерний элемент, имеющий указанное(ые) имя(на) класса.

Метод getElementsByClassName() на интерфейсе Document работает по существу так же, за исключением того, что он действует на весь документ, начиная с корня документа.

Синтаксис

getElementsByClassName(names)

Параметры

names

Строка, содержащая одно или несколько имен классов, которые нужно сопоставить, разделенные пробелами.

Возвращаемое значение

An HTMLCollection предоставляющий динамически обновляемый список каждого элемента, который является членом каждого класса в names.

Примечания по использованию

Как всегда, возвращаемый объект — динамический, что означает, что он всегда отражает текущее состояние дерева DOM, укоренённого в элементе, к которому была применена функция. По мере добавления новых элементов, соответствующих names, в поддерево, они немедленно появляются в коллекции. Аналогично, если существующий элемент, не соответствующий names, изменяет свой набор классов так, что он соответствует, он немедленно появляется в коллекции.

То же самое верно и в обратном порядке; элементы, которые больше не соответствуют набору имён, немедленно удаляются из коллекции.

Примечание: В режиме совместимости имена классов сравниваются без учёта регистра. В противном случае они чувствительны к регистру.

Примеры

Сопоставление одного класса

Чтобы найти элементы, включающие среди своих классов один указанный класс, нам достаточно указать это имя класса при вызове getElementsByClassName():

element.getElementsByClassName("test");

Этот пример находит все элементы, имеющие класс test, которые также являются потомками элемента, имеющего id main:

document.getElementById("main").getElementsByClassName("test");

Сопоставление нескольких классов

Чтобы найти элементы, чьи списки классов включают как класс red, так и класс test:

element.getElementsByClassName("red test");

Просмотр результатов

Вы можете использовать метод item() в возвращённом HTMLCollection или стандартную синтаксическую запись массивов, чтобы просмотреть отдельные элементы в коллекции. Однако следующий код не будет работать так, как ожидается, потому что "matches" изменится, как только любой "color-box" класс будет удалён.

const matches = element.getElementsByClassName("color-box");

for (let i = 0; i < matches.length; i++) {
  matches[i].classList.remove("color-box");
  matches.item(i).classList.add("hue-frame");
}

Вместо этого используйте другой метод, например:

const matches = element.getElementsByClassName("color-box");

while (matches.length > 0) {
  matches.item(0).classList.add("hue-frame");
  matches[0].classList.remove("color-box");
}

Этот код находит дочерние элементы с классом "color-box", добавляет класс "hue-frame", вызывая item(0), затем удаляет "color-box" (используя запись массива). Затем другой элемент (если таковые остались) станет item(0).

Фильтрация результатов с использованием методов массивов

Мы также можем использовать методы Array на любом HTMLCollection, передавая HTMLCollection в качестве значения this метода. Здесь мы найдём все <div> элементы, которые имеют класс test:

const testElements = document.getElementsByClassName("test");
const testDivs = Array.prototype.filter.call(
  testElements,
  (testElement) => testElement.nodeName === "DIV",
);

Спецификации

Спецификация
DOM
# ref-for-dom-element-getelementsbyclassname

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
getElementsByClassName 1 16
12–16Только для HTMLElement, а не для всех объектов Element, таких как SVGElement.
3До Firefox 19 этот метод возвращал NodeList; затем он был изменён, чтобы отразить изменения в спецификации.
9.5 3.1 18 4 10.1 2 1.0 4.4

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByClassName

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API