JS властивість Element.nextSibling
Загальний опис
nextSibling
є властивістю вузла в об'єктній моделі документа (DOM), що представляє наступний вузол того самого батьківського елемента. Ця властивість дозволяє отримати доступ до сусіднього вузла після поточного, що може бути корисним для обходу та маніпуляції елементами DOM. Вона широко застосовується при роботі з DOM, особливо для динамічних змін структури веб-сторінки.
Властивість nextSibling
повертає наступний вузол-сусід або null
, якщо такого вузла немає. Важливо зазначити, що ця властивість враховує всі типи вузлів, включно з текстовими вузлами та коментарями. Наприклад, розглянемо таку структуру HTML:
<div id="parent">
<p>Перший параграф</p>
<!-- Коментар -->
<span>Текстовий вузол</span>
<p>Другий параграф</p>
</div>
Якщо ми отримаємо перший елемент <p>
та спробуємо отримати його наступний вузол-сусід за допомогою nextSibling
, ми отримаємо вузол коментаря:
const firstParagraph = document.querySelector('#parent > p');
const nextNode = firstParagraph.nextSibling;
console.log(nextNode); // <!-- Коментар -->
Щоб отримати наступний елемент, а не текстовий вузол або коментар, ми можемо використати властивість nextElementSibling
. Ця властивість повертає наступний елемент-сусід, ігноруючи текстові вузли та коментарі:
const firstParagraph = document.querySelector('#parent > p');
const nextElement = firstParagraph.nextElementSibling;
console.log(nextElement); // <span>Текстовий вузол</span>
Властивість nextSibling
часто використовується в циклах для обходу всіх вузлів-сусідів. Наприклад, щоб вивести всі елементи <p>
у батьківському елементі #parent
, ми можемо використати такий код:
const parentElement = document.querySelector('#parent');
let currentNode = parentElement.firstChild;
while (currentNode) {
if (currentNode.nodeType === Node.ELEMENT_NODE && currentNode.nodeName === 'P') {
console.log(currentNode.textContent);
}
currentNode = currentNode.nextSibling;
}
У цьому прикладі ми використовуємо firstChild
для отримання першого дочірнього вузла батьківського елемента, а потім ітеруємо через всі вузли-сусіди за допомогою циклу while
та властивості nextSibling
. Ми перевіряємо, чи є поточний вузол елементом <p>
, і якщо так, виводимо його текстовий вміст.
Властивість nextSibling
також корисна для вставки нових елементів у DOM. Наприклад, щоб вставити новий елемент <span>
після першого елемента <p>
у батьківському елементі #parent
, ми можемо використати такий код:
const parentElement = document.querySelector('#parent');
const firstParagraph = parentElement.firstElementChild;
const newSpan = document.createElement('span');
newSpan.textContent = 'Новий елемент';
parentElement.insertBefore(newSpan, firstParagraph.nextSibling);
У цьому прикладі ми створюємо новий елемент <span>
за допомогою document.createElement('span')
та встановлюємо його текстовий вміст. Потім ми використовуємо метод insertBefore
на батьківському елементі, передаючи новий елемент newSpan
та firstParagraph.nextSibling
як другий аргумент. Це вставить новий елемент <span>
безпосередньо після першого елемента <p>
.
Крім того, властивість nextSibling
може бути корисною для зміни стилів або маніпуляції із сусідніми вузлами. Наприклад, щоб змінити колір тексту всіх елементів <p>
після першого елемента <p>
у батьківському елементі #parent
, ми можемо використати такий код:
const parentElement = document.querySelector('#parent');
let currentNode = parentElement.firstElementChild.nextElementSibling;
while (currentNode) {
if (currentNode.nodeName === 'P') {
currentNode.style.color = 'red';
}
currentNode = currentNode.nextElementSibling;
}
У цьому прикладі ми починаємо з наступного елемента після першого елемента <p>
за допомогою firstElementChild.nextElementSibling
. Потім ми ітеруємо через всі наступні елементи-сусіди за допомогою циклу while
та властивості nextElementSibling
. Якщо поточний вузол є елементом <p>
, ми змінюємо колір його тексту на червоний.
Підсумовуючи, властивість nextSibling
є корисним інструментом для обходу та маніпуляції вузлами DOM. Вона дозволяє отримати доступ до наступного вузла-сусіда, включно з текстовими вузлами та коментарями, що може бути корисним для різноманітних операцій з DOM. Разом з іншими властивостями та методами DOM, nextSibling
забезпечує гнучкість та контроль над структурою веб-сторінки.
Порада: | Якщо вам потрібно обійти лише елементи, використовуйте властивість |
Порада: | При вставці нового вузла в DOM, використовуйте метод
|
Порада: | Будьте обережні при обході вузлів за допомогою
|
Синтаксис
Element.nextSibling
Значення
Return
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1.1 |
7 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
- |
- |
Приклади
У цьому прикладі ми маємо список елементів та кнопки для переходу між ними. Властивість nextSibling
використовується для отримання наступного елемента списку, а previousElementSibling
- для отримання попереднього елемента.
При завантаженні сторінки перший елемент списку стає активним. Кнопки "Наступний елемент" та "Попередній елемент" дозволяють переходити між елементами списку, використовуючи властивості nextSibling
та previousElementSibling
відповідно.
Коли користувач натискає кнопку "Наступний елемент", скрипт перевіряє, чи існує наступний елемент за допомогою activeElement.nextElementSibling
. Якщо наступний елемент існує, поточний активний елемент втрачає клас active
, а наступний елемент отримує цей клас та відображається як поточний у полі "Поточний елемент".
Аналогічно, при натисканні кнопки "Попередній елемент", скрипт перевіряє наявність попереднього елемента за допомогою activeElement.previousElementSibling
. Якщо попередній елемент існує, поточний активний елемент втрачає клас active
, а попередній елемент отримує цей клас та відображається як поточний.
Важливо зазначити, що у цьому прикладі використовується nextElementSibling
та previousElementSibling
замість nextSibling
та previousSibling
, оскільки ці властивості ігнорують текстові вузли між елементами, що спрощує обробку та робить код більш зрозумілим.
У цьому прикладі ми використовуємо властивість nextSibling
для переходу до наступного елемента-сусіда у структурі DOM. Це простий спосіб перейти до наступного вузла без необхідності явно отримувати батьківський вузол.
// Отримуємо елемент з ідентифікатором 'start'
const startElement = document.getElementById('start');
// Отримуємо наступний елемент-сусід
const nextSibling = startElement.nextSibling;
// Виводимо вузол до консолі
console.log(nextSibling);
У цьому прикладі ми використовуємо властивість nextSibling
у циклі для проходження по всіх елементах-сусідах певного вузла. Це корисно, коли потрібно виконати певні дії з кількома послідовними елементами. Слід зазначити, що nextSibling
може повертати текстові вузли між елементами, тому ми перевіряємо nodeType
перед обробкою вузла.
// Отримуємо елемент з ідентифікатором 'parent'
const parentElement = document.getElementById('parent');
// Отримуємо першого дочірнього елемента
let currentChild = parentElement.firstChild;
// Проходимо по всіх дочірніх елементах
while (currentChild) {
// Перевіряємо, чи це елемент (nodeType === 1)
if (currentChild.nodeType === 1) {
// Виконуємо дії з елементом
console.log(`Елемент: ${currentChild.tagName}`);
}
// Переходимо до наступного сусіда
currentChild = currentChild.nextSibling;
}