Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS властивість Element.previousSibling

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

previousSibling - це властивість вузлів у моделі об'єктної моделі документа (DOM), яка повертає попередній сусідній вузол на тому ж рівні ієрархії DOM. Вона дозволяє отримати доступ до попереднього сусіднього вузла та маніпулювати ним за допомогою JavaScript. Ця властивість може бути корисною для навігації по DOM та виконання операцій на сусідніх вузлах.

Використання previousSibling досить просте. Розглянемо приклад з HTML-структурою:

<div id="parent">
  <p>Перший текстовий вузол</p>
  <span id="middle">Середній вузол</span>
  <p>Третій текстовий вузол</p>
</div>

Ми можемо отримати доступ до попереднього сусіднього вузла елемента span через властивість previousSibling:

const middleElement = document.getElementById('middle');
const previousSibling = middleElement.previousSibling;
console.log(previousSibling); // Текстовий вузол з "Перший текстовий вузол"

Важливо зазначити, що previousSibling може повертати текстові вузли, які містять лише пробіли або символи переносу рядка. Тому часто доводиться перевіряти тип вузла перед виконанням будь-яких операцій.

Одним із поширених випадків використання previousSibling є маніпуляція сусіднім елементом на основі дій, виконаних на поточному елементі. Наприклад, ми можемо змінити стиль попереднього сусіднього елемента при натисканні на поточний елемент:

<div id="parent">
  <button id="first">Перший</button>
  <button id="second">Другий</button>
</div>
const secondButton = document.getElementById('second');
secondButton.addEventListener('click', () => {
  const previousSibling = secondButton.previousSibling;
  if (previousSibling.nodeType === Node.ELEMENT_NODE) {
    previousSibling.classList.add('highlighted');
  }
});

Властивість previousSibling також може бути корисною для навігації по DOM-ієрархії та виконання операцій на сусідніх вузлах. Наприклад, ми можемо змінити текст попереднього сусіднього елемента на основі значення введеного в текстове поле:

<div id="parent">
  <p id="previous">Попередній текст</p>
  <input type="text" id="current" placeholder="Введіть текст">
</div>
const currentInput = document.getElementById('current');
const previousSibling = currentInput.previousSibling;

currentInput.addEventListener('input', () => {
  if (previousSibling.nodeType === Node.ELEMENT_NODE) {
    previousSibling.textContent = currentInput.value;
  }
});

Крім того, previousSibling може бути використана для перевірки, чи є вузол сусіднім вузлом певного іншого вузла, що може бути корисним для різних цілей, наприклад, для валідації або авторизації.

Властивість previousSibling є важливою частиною DOM та може бути використана для навігації по DOM-ієрархії, маніпуляції сусідніми вузлами та взаємодії між ними. Вона забезпечує зручний спосіб отримати доступ та змінити попередній сусідній вузол, що дозволяє створювати динамічні та інтерактивні веб-додатки.

Однак слід пам'ятати, що previousSibling може повертати текстові вузли, які містять лише пробіли або символи переносу рядка. Тому перед виконанням будь-яких операцій на отриманому вузлі необхідно перевірити його тип за допомогою властивості nodeType. Наприклад:

const currentElement = document.getElementById('current');
const previousSibling = currentElement.previousSibling;

if (previousSibling.nodeType === Node.ELEMENT_NODE) {
  // Виконайте операції з попереднім сусіднім елементом
} else if (previousSibling.nodeType === Node.TEXT_NODE) {
  // Обробіть текстовий вузол за потреби
}

Крім того, слід враховувати, що previousSibling повертає null, якщо вузол не має попереднього сусіднього вузла. Це може статися, наприклад, для першого дочірнього вузла батьківського елемента. Тому завжди перевіряйте результат перед виконанням будь-яких операцій з попереднім сусіднім вузлом.

Загалом, previousSibling є потужним інструментом для маніпуляції вузлами DOM та взаємодії між ними. Вона дозволяє створювати складні та динамічні веб-додатки, забезпечуючи доступ до сусідніх вузлів та можливість змінювати їх стан або властивості. Однак, як і при роботі з будь-якими властивостями DOM, важливо ретельно перевіряти типи вузлів та обробляти можливі винятки, щоб забезпечити стабільну та надійну роботу вашого коду.

Порада:

Пам'ятайте, що previousSibling може повертати текстові вузли, які містять лише пробіли або символи переносу рядка. Тому завжди перевіряйте тип вузла за допомогою nodeType перед виконанням будь-яких операцій з ним.

Порада:

Використовуйте previousSibling для перевірки, чи є вузол попереднім сусіднім вузлом певного іншого вузла. Це може бути корисним для цілей валідації або авторизації. Ви можете порівняти previousSibling з очікуваним сусіднім вузлом, щоб перевірити їх відношення.

Порада:

Пам'ятайте, що previousSibling повертає null, якщо вузол не має попереднього сусіднього вузла, наприклад, для першого дочірнього вузла батьківського елемента. Завжди перевіряйте результат перед виконанням будь-яких операцій з попереднім сусіднім вузлом:

const currentElement = document.getElementById('current');
const previousSibling = currentElement.previousSibling;
if (previousSibling) {
  // Виконайте операції з попереднім сусіднім вузлом
} else {
  // Обробіть випадок, коли попередній сусідній вузол відсутній
}

Синтаксис

Element.previousSibling

Значення

Return

Переглядачі

Переглядач

1

1

1

12.1

12

Переглядач

4.4

18

4

1

Переглядач

-

-

Приклади


У цьому прикладі створено контейнер div з трьома дочірніми елементами: два елементи p та один елемент span. Є дві кнопки: одна для показу previousSibling для елемента p з ідентифікатором target, а інша - для зміни тексту previousSibling, якщо він є елементом.

При натисканні на кнопку "Показати previousSibling" викликається функція showPreviousSibling(), яка отримує previousSibling для цільового елемента p та виводить повідомлення в елемент <p> з ідентифікатором output, вказуючи тег попереднього сиблінга або повідомлення про його відсутність.

При натисканні на кнопку "Змінити текст previousSibling" викликається функція changePreviousSiblingText(), яка отримує previousSibling для цільового елемента p. Якщо попередній сиблінг існує і є елементом, його текст змінюється на "Змінений текст". Якщо попередній сиблінг не є елементом, виводиться повідомлення про неможливість змінити його текст.

Цей приклад демонструє, як можна отримувати previousSibling для будь-якого вузла та перевіряти його тип (елемент чи ні). Також показано, як змінювати текст елемента, якщо попередній сиблінг є елементом. Користувач може взаємодіяти зі сторінкою, натискаючи на кнопки та спостерігаючи за змінами в елементі output.

У цьому прикладі ми створюємо новий елемент div та два нових елемента p. Потім ми додаємо ці два елемента p як дочірні елементи до елемента div за допомогою методу appendChild(). Після цього ми отримуємо previousSibling для другого елемента p, який повинен бути першим елементом p. Нарешті, ми перевіряємо, чи дійсно previousSibling другого елемента p є тим самим першим елементом p, що ми створили раніше, і виводимо результат у консоль.

// Створюємо новий елемент div
const parentDiv = document.createElement('div');

// Створюємо два нових елемента p
const firstP = document.createElement('p');
firstP.textContent = 'Це перший елемент p';

const secondP = document.createElement('p');
secondP.textContent = 'Це другий елемент p';

// Додаємо елементи p до елемента div
parentDiv.appendChild(firstP);
parentDiv.appendChild(secondP);

// Отримуємо previousSibling для другого елемента p
const previousSibling = secondP.previousSibling;

// Виводимо previousSibling у консоль
console.log(previousSibling === firstP); // Вивід: true

У цьому прикладі ми створюємо новий елемент div, два нових елемента p та новий елемент span. Потім ми додаємо перший елемент p, елемент span та другий елемент p як дочірні елементи до елемента div. Після цього ми отримуємо previousSibling для другого елемента p, який повинен бути елементом span. Нарешті, ми перевіряємо, чи дійсно previousSibling другого елемента p є тим самим елементом span, що ми створили раніше, і виводимо результат у консоль.

// Створюємо новий елемент div
const parentDiv = document.createElement('div');

// Створюємо два нових елемента p
const firstP = document.createElement('p');
firstP.textContent = 'Це перший елемент p';

const secondP = document.createElement('p');
secondP.textContent = 'Це другий елемент p';

// Створюємо новий елемент span
const newSpan = document.createElement('span');
newSpan.textContent = 'Це новий елемент span';

// Додаємо елементи p та span до елемента div
parentDiv.appendChild(firstP);
parentDiv.appendChild(newSpan);
parentDiv.appendChild(secondP);

// Отримуємо previousSibling для другого елемента p
const previousSibling = secondP.previousSibling;

// Виводимо previousSibling у консоль
console.log(previousSibling === newSpan); // Вивід: true