JS метод Element.getElementsByClassName()


Загальний опис

Element.getElementsByClassName() - це метод, який дозволяє отримати колекцію (псевдомасив) елементів, що відповідають заданому імені класу CSS. Цей метод є корисним для вибору та маніпулювання групою елементів, які мають спільний клас, без необхідності вибирати їх окремо. Він часто використовується для роботи з елементами інтерфейсу, такими як кнопки, посилання або блоки контенту, які мають однакове форматування або поведінку.

Використання методу getElementsByClassName() є досить простим. Він приймає один аргумент - рядок, що представляє ім'я класу CSS. Наприклад, щоб отримати всі елементи з класом "button" у межах елемента document.body, можна використати такий код:

const buttons = document.body.getElementsByClassName('button');

Результатом буде колекція HTMLCollection, що містить всі відповідні елементи. Ця колекція є "живою", що означає, що вона автоматично оновлюється, якщо елементи додаються або видаляються з документа.

Метод getElementsByClassName() можна застосовувати не лише до document.body, а до будь-якого елемента на сторінці. Наприклад, якщо у вас є елемент <div id="container"> з кількома дочірніми елементами, що мають клас "item", ви можете отримати їх таким чином:

const container = document.getElementById('container');
const items = container.getElementsByClassName('item');

Також можна використовувати кілька імен класів, розділених пробілом, щоб вибрати елементи, що мають всі ці класи. Наприклад:

const specialItems = document.body.getElementsByClassName('item special');

Це поверне колекцію елементів, що мають обидва класи "item" та "special".

Після того, як ви отримали колекцію елементів, ви можете маніпулювати ними різними способами. Наприклад, змінити стилі, додати або видалити класи, змінити вміст або обробляти події. Ось приклад, який змінює колір тексту всіх елементів з класом "highlight":

const highlightedElements = document.getElementsByClassName('highlight');
for (let i = 0; i < highlightedElements.length; i++) {
  highlightedElements[i].style.color = 'red';
}

Слід зазначити, що метод getElementsByClassName() повертає "живу" колекцію, що означає, що вона автоматично оновлюється при змінах у документі. Якщо вам потрібно працювати з "статичним" набором елементів, який не змінюватиметься при змінах у документі, вам слід перетворити колекцію на масив, використовуючи Array.from() або поширення (...).

Загалом, Element.getElementsByClassName() є потужним інструментом для вибору та маніпулювання групами елементів на основі їх класів CSS, що робить його корисним для різноманітних завдань веброзробки.

автор: Bond

Порада

Якщо ви плануєте часто використовувати вибірку елементів за класом, розгляньте можливість кешувати результат, щоб уникнути повторних запитів до DOM. Наприклад: const cachedElements = document.getElementsByClassName('my-class'); function updateElements() { [...cachedElements].forEach(el => { /* оновлення елементів */ }); }.

автор: Bond
Порада

Ви можете використовувати кілька імен класів, розділених пробілом, щоб вибрати елементи, які мають всі ці класи. Наприклад: const specialItems = document.body.getElementsByClassName('item special'); поверне елементи з обома класами "item" та "special".

автор: Bond
Порада

Пам'ятайте, що getElementsByClassName() шукає елементи лише в межах вказаного елемента та його нащадків. Якщо вам потрібно отримати всі елементи з певним класом у всьому документі, застосуйте метод до document.documentElement або document.body.

автор: Bond

Синтаксис

getElementsByClassName(names)

Параметри

names

Рядок, що містить одне або кілька імен класів для пошуку, розділених пробілами. Метод поверне всі елементи, що мають всі зазначені класи.

автор: Bond

Повернення

HTMLCollection

Повертає об'єкт HTMLCollection, що надає "живий" список усіх елементів, які належать до всіх класів, зазначених в аргументі. Цей список автоматично оновлюється при змінах у документі. Елементи в колекції можна перебирати за допомогою циклу або використовувати індексацію для доступу до окремих елементів. Однак колекція є "живою", тому для роботи зі статичним набором елементів її слід перетворити на масив.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 3 3.1 9.5 16 9*
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 2

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі показано, як використовувати метод getElementsByClassName() для отримання колекції елементів, що мають певний клас CSS. Це корисно, коли потрібно маніпулювати або застосовувати певну поведінку до групи елементів на сторінці.

<div class="box">Елемент 1</div>
<p>Інший елемент</p>
<div class="box">Елемент 2</div>
<div class="box">Елемент 3</div>

<script>
// Отримуємо колекцію елементів з класом "box"
const boxElements = document.getElementsByClassName('box');

// Перебираємо колекцію та змінюємо стиль елементів
for (let i = 0; i < boxElements.length; i++) {
  boxElements[i].style.backgroundColor = 'yellow';
  boxElements[i].style.padding = '10px';
}
</script>
автор: Bond

У цьому прикладі ми маємо три елементи div з класом box та кнопку "Змінити стиль". При натисканні на кнопку виконується функція toggleElementsStyle(), яка отримує колекцію елементів з класом box за допомогою методу getElementsByClassName('box').

автор: Bond

У цьому прикладі ми маємо кнопку "Змінити стан" і групу елементів div з класами box і active. При натисканні на кнопку виконується функція toggleElementsClass(), яка перебирає колекцію елементів, отриману за допомогою getElementsByClassName('box'). Залежно від значення прапорця isActive, функція додає або видаляє клас active для кожного елемента, використовуючи метод classList.add() або classList.remove().

<button id="toggleButton">Змінити стан</button>
<div class="box active">Елемент 1</div>
<div class="box">Елемент 2</div>
<div class="box active">Елемент 3</div>

<script>
const toggleButton = document.getElementById('toggleButton');
const boxElements = document.getElementsByClassName('box');
let isActive = true;

function toggleElementsClass() {
  for (let i = 0; i < boxElements.length; i++) {
    if (isActive) {
      boxElements[i].classList.remove('active');
    } else {
      boxElements[i].classList.add('active');
    }
  }
  isActive = !isActive;
}

toggleButton.addEventListener('click', toggleElementsClass);
</script>
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід