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

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

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

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

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

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

JS метод Element.compareDocumentPosition()

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

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

Основна суть методу compareDocumentPosition() полягає в тому, що він надає можливість визначити відносини між елементами у DOM-структурі, що може бути корисним у випадках, коли вам потрібно взаємодіяти з різними елементами сторінки або визначати їхні взаємини.

Один з основних способів використання методу compareDocumentPosition() - це визначення, чи є один елемент нащадком іншого. Наприклад:

const parentElement = document.getElementById('parent');
const childElement = document.getElementById('child');

const position = parentElement.compareDocumentPosition(childElement);

if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {
    console.log('childElement є нащадком parentElement');
}

У цьому прикладі ми перевіряємо, чи є childElement нащадком parentElement, використовуючи метод compareDocumentPosition(). Якщо результат містить Node.DOCUMENT_POSITION_CONTAINED_BY, то це означає, що childElement є нащадком parentElement.

Крім того, метод compareDocumentPosition() може бути використаний для визначення порядку елементів у DOM-структурі. Наприклад:

const element1 = document.getElementById('element1');
const element2 = document.getElementById('element2');

const position = element1.compareDocumentPosition(element2);

if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
    console.log('element1 передує element2 у DOM');
} else if (position & Node.DOCUMENT_POSITION_PRECEDING) {
    console.log('element1 слідує за element2 у DOM');
}

У цьому прикладі ми визначаємо, чи element1 слідує за element2 у DOM-структурі або передує йому, використовуючи метод compareDocumentPosition().

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

Порада:

Початківцям важливо зрозуміти, що метод compareDocumentPosition() дозволяє порівняти розташування двох елементів в DOM-дереві. Для використання цього методу необхідно мати знання про структуру документа та розуміння його внутрішньої організації.

Порада:

Досвідченим програмістам важливо пам'ятати, що compareDocumentPosition() повертає комбінацію флагів, що вказують на відносини між елементами: чи є один елемент предком, нащадком, сусідом або самим собою відносно іншого елемента. Це дозволяє ефективно керувати порядком елементів у документі та виконувати необхідні маніпуляції з DOM.

Порада:

Порада для початківців: перед використанням compareDocumentPosition() варто вивчити структуру DOM та збагатити розуміння про взаємозв'язки між елементами. Наприклад, можна використовувати інструменти браузера для вивчення DOM-структури та її взаємозв'язків.

Синтаксис

compareDocumentPosition(otherElement)

Параметри

*otherElement

Елемент, для якого потрібно повідомити позицію відносно даного елементу.

Return

Element

Повертає ціле значення, що представляє позицію otherElement відносно даного елементу як комбінацію флагів. Ці флаги відображають різні відносини між елементами, такі як DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_PRECEDING, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_CONTAINED_BY, та DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC. Більше одного біта встановлено, якщо застосовуються різні сценарії. Наприклад, якщо otherNode знаходиться раніше у документі та містить елемент, на якому було викликано compareDocumentPosition(), тоді встановлюються біти DOCUMENT_POSITION_CONTAINS та DOCUMENT_POSITION_PRECEDING, що дає значення 10 (0x0A).

Переглядачі

Переглядач

2

1

4

12.1

12

Переглядач

37

18

4

3.2

Переглядач

-

-

Приклади


У цьому прикладі ми маємо два вузли (node1 та node2) у контейнері. При натисканні кнопки "Порівняти вузли" виконується метод compareDocumentPosition(), який порівнює позицію цих двох вузлів у дереві документа. Результат порівняння виводиться у <div> з класом output.

Користувач може взаємодіяти з прикладом, натискаючи на кнопку "Порівняти вузли". Це продемонструє використання методу compareDocumentPosition() для визначення відносного розташування двох вузлів у дереві документа.

Метод compareDocumentPosition() повертає бітову маску, яка вказує на різні можливі відносини між вузлами. У прикладі ми перевіряємо ці біти та формуємо відповідний текстовий опис відносного розташування вузлів.

Наприклад, якщо вузли не пов'язані між собою, буде виведено "Вузли не пов'язані між собою". Якщо Вузол 1 передує Вузлу 2, буде виведено "Вузол 1 передує Вузлу 2". Якщо Вузол 1 містить Вузол 2, буде виведено "Вузол 1 містить Вузол 2" і так далі.

Цей приклад демонструє, як використовувати метод compareDocumentPosition() для визначення відносного розташування двох вузлів у дереві документа, а також ілюструє різні можливі відносини між вузлами.

У цьому простому прикладі ми використовуємо метод compareDocumentPosition() для порівняння позиції двох елементів element1 та element2. Метод повертає комбінований бітовий результат, який можна розшифрувати за допомогою значень констант Node.DOCUMENT_POSITION_FOLLOWING та Node.DOCUMENT_POSITION_PRECEDING, щоб визначити взаємне розташування елементів у документі.

// HTML розмітка
// <div id="element1">Element 1</div>
// <div id="element2">Element 2</div>

// JavaScript код
const element1 = document.getElementById("`element1`");
const element2 = document.getElementById("`element2`");

const position = element1.compareDocumentPosition(element2);

if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
  console.log("`element1` знаходиться перед `element2` у документі");
} else if (position & Node.DOCUMENT_POSITION_PRECEDING) {
  console.log("`element1` знаходиться після `element2` у документі");
} else {
  console.log("`element1` та `element2` знаходяться у різних гілках документа");
}

У цьому складнішому прикладі ми порівнюємо позиції елементів element1 та element2 відносно контейнера container. Використовуючи метод compareDocumentPosition(), ми визначаємо, чи один елемент знаходиться всередині іншого або чи один елемент містить інший. Цей приклад демонструє можливості використання методу compareDocumentPosition() для визначення взаємного розташування елементів у складних структурах документа.

// HTML розмітка
// <div id="container">
//   <div id="element1">Element 1</div>
//   <div id="element2">Element 2</div>
// </div>

// JavaScript код
const container = document.getElementById("`container`");
const element1 = document.getElementById("`element1`");
const element2 = document.getElementById("`element2`");

const position1 = container.compareDocumentPosition(element1);
const position2 = container.compareDocumentPosition(element2);

if (position1 & Node.DOCUMENT_POSITION_CONTAINED_BY) {
  console.log("`element1` знаходиться всередині `container`");
}

if (position2 & Node.DOCUMENT_POSITION_CONTAINS) {
  console.log("`container` містить `element2`");
}