JS метод Element.contains()


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

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

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

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

if (parentElement.contains(childElement)) {
    console.log('childElement є нащадком parentElement');
} else {
    console.log('childElement не є нащадком parentElement');
}

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

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

const bodyElement = document.body;
const targetElement = document.getElementById('target');

if (bodyElement.contains(targetElement)) {
    console.log('Документ містить цей елемент');
} else {
    console.log('Документ не містить цей елемент');
}

У цьому прикладі ми перевіряємо, чи містить документ елемент з id target в якості свого нащадка, використовуючи метод contains().

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

автор: Bond

Порада

Досвідченим програмістам варто пам'ятати, що метод contains() може бути корисним при роботі з подіями або при необхідності перевірити, чи міститься певний елемент у контейнері перед виконанням певної дії. Наприклад, перевірка перед видаленням елемента з DOM.

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

Для початківців важливо вивчити синтаксис методу contains() та правильно використовувати його в своєму коді. Наприклад, використання умовного оператора для перевірки наявності елемента перед виконанням певних дій.

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

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

автор: Bond

Синтаксис

contains(otherElement)

Параметри

otherElement

Вузол для перевірки.

автор: Bond

Повернення

Element

Повертає логічне значення, яке є true, якщо otherElement міститься в елементі, і false - якщо ні. Якщо параметр otherNode є null, метод завжди повертає false.

автор: Bond

Переглядачі

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

Приклади

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

У цьому простому прикладі ми використовуємо метод contains() для перевірки, чи містить елемент parent елемент child. Метод повертає значення true, якщо елемент містить дочірній елемент, і false в протилежному випадку.

HTML

<div id="parent">Демонстраційний елемент</div>
<div id="child">Демонстраційний елемент</div>

JS

// HTML розмітка
// <div id="parent">
//   <div id="child">Child Element</div>
// </div>

// JavaScript код
const parentElement = document.getElementById("parent");
const childElement = document.getElementById("child");

if (parentElement.contains(childElement)) {
  console.log("Елемент `parent` містить елемент `child`");
} else {
  console.log("Елемент `parent` не містить елемент `child`");
}
автор: Bond

У цьому складнішому прикладі ми використовуємо метод contains() для перевірки кожного елемента item всередині контейнера container. Ми використовуємо цикл forEach, щоб пройтися по кожному елементу item та вивести відповідне повідомлення про його наявність в контейнері. Цей приклад показує, як метод contains() може бути використаний для перевірки наявності декількох елементів всередині одного батьківського елемента.

// HTML розмітка
// <div class="container">
//   <div class="item">Item 1</div>
//   <div class="item">Item 2</div>
//   <div class="item">Item 3</div>
// </div>

// JavaScript код
const container = document.querySelector("div.container");
const items = document.querySelectorAll("div.item");

items.forEach(item => {
  if (container.contains(item)) {
    console.log(`Елемент "${item.textContent}" міститься всередині контейнера`);
  } else {
    console.log(`Елемент "${item.textContent}" не міститься всередині контейнера`);
  }
});
автор: Bond

У цьому прикладі ми маємо батьківський елемент <div> з класом parent, який містить дочірній елемент <div> з класом child. Є також чекбокс, який дозволяє переміщати дочірній елемент з батьківського елемента в <body> документа і навпаки.

При зміні стану чекбокса, дочірній елемент переміщується відповідно до вибору користувача, і метод contains() використовується для перевірки, чи батьківський елемент містить дочірній елемент. Результат виводиться в <div> з класом output.

Коли чекбокс не вибрано, дочірній елемент знаходиться всередині батьківського елемента, і виводиться повідомлення "Батьківський елемент містить дочірній елемент". Коли чекбокс вибрано, дочірній елемент переміщується в <body> документа, і виводиться повідомлення "Батьківський елемент не містить дочірній елемент".

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

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

автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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