JS об'єкт HTMLCollection
HTMLCollection в JavaScript
HTMLCollection
- це об'єкт у JavaScript, який представляє колекцію елементів DOM, доступних за індексом або ім'ям. Типово ви зіткнетеся з HTMLCollection
при використанні таких методів DOM, як document.getElementsByTagName
або element.children
.
Приклад:
let divs = document.getElementsByTagName("div");
console.log(divs instanceof HTMLCollection); // виведе true
У цьому прикладі ми отримали всі елементи div
з документа у вигляді HTMLCollection
.
Доступ до елементів
Ви можете отримати доступ до елементів колекції за допомогою індекса, так само як і у масивів.
let firstDiv = divs[0]; // отримуємо перший елемент div з колекції
Перебір елементів
Незважаючи на те, що HTMLCollection
не є масивом, ви можете використовувати цикл for
для перебору його елементів:
for (let i = 0; i < divs.length; i++) {
console.log(divs[i]); // виводить кожен елемент div
}
Властивість length
HTMLCollection
має властивість length
, яка повертає кількість елементів у колекції:
let totalDivs = divs.length; // отримуємо кількість елементів div на сторінці
console.log(totalDivs);
Метод namedItem
Цей метод дозволяє отримати елемент з HTMLCollection
за ім'ям його атрибуту name
або id
.
let element = divs.namedItem("someId");
console.log(element); // виводить елемент з id "someId" або null, якщо такого елемента немає
Живі колекції
HTMLCollection
- це так звана "жива" колекція, що означає, що вона автоматично оновлюється при зміні DOM. Якщо ви видаляєте або додаєте елементи на сторінку, колекція буде автоматично відображати ці зміни.
let divs = document.getElementsByTagName("div");
console.log(divs.length); // припустимо, що виведе 5
// додаємо новий div на сторінку
let newDiv = document.createElement("div");
document.body.appendChild(newDiv);
console.log(divs.length); // виведе 6, оскільки колекція автоматично оновлена
Нотатка: |
|
Порада: | Хоча |
Порада: | Намагайтеся не модифікувати DOM під час ітерації через |
Нотатка: | Ви можете легко перетворити
|
Нотатка: |
|
Синтаксис
let elements = document.getElementsByTagName(tagName);
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1 |
8 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Якщо вам потрібно швидко змінити стиль для всіх елементів певного типу, наприклад, для всіх параграфів, ви можете використовувати HTMLCollection
.
В цьому прикладі ми змінили колір тексту всіх параграфів на синій.
let paragraphs = document.getElementsByTagName('p');
for (let i = 0; i < paragraphs.length; i++) {
paragraphs[i].style.color = 'blue';
}
Якщо на вашій сторінці є багато елементів із певним класом, які вам потрібно видалити, ви також можете використовувати HTMLCollection
.
Тут ми видаляємо всі елементи з класом "unwanted"
. Ми використовуємо цикл while
, оскільки HTMLCollection
є "живою" колекцією, і її розмір зменшується після кожного видалення.
let unwantedElements = document.getElementsByClassName('unwanted');
while(unwantedElements[0]) {
unwantedElements[0].parentNode.removeChild(unwantedElements[0]);
}
HTMLCollection
може бути корисним, коли вам потрібно працювати із формами та їх елементами.
Цей приклад проходить через всі елементи форми і виводить їх імена та значення.
let form = document.forms['myForm'];
let formElements = form.elements;
for (let i = 0; i < formElements.length; i++) {
console.log(formElements[i].name + ': ' + formElements[i].value);
}