JavaScript childNodes — усі дочірні вузли, включно з текстом


Властивість childNodes повертає всі дочірні вузли — включно з текстовими й коментарями.

автор: NagarD

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

Це та властивість, через яку новачки втрачають годину. У гарно відформатованій розмітці між теґами є переноси рядків, а кожен перенос — це текстовий вузол. Тому список із двох <li> дає п'ять дочірніх вузлів: текст, li, текст, li, текст.

Потрібні лише теґи — бери children. Різниця в одному слові, а наслідки величезні.

Повертається живий NodeList — методів масиву в нього немає, тож для filter() чи map() доведеться розгорнути спредом.

автор: NagarD

Нотатка

childNodesживий список: він оновлюється сам, коли DOM змінюється. Видалення елементів у циклі по ньому дає класичний баг «видалилась половина».

автор: NagarD

Переглядачі

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

Приклади

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

Звідки беруться зайві вузли й чому список живий.

HTML

<ul id="list">
    <li>Перший</li>
    <li>Другий</li>
</ul>

JS

const list = document.getElementById('list');

console.log(list.childNodes.length); // 5 — текст, li, текст, li, текст
console.log(list.children.length);   // 2 — лише теґи

// список живий: видаляти в циклі по ньому — пастка
// for (const node of list.childNodes) node.remove(); // видалить половину!

// правильно — зафіксувати копію
for (const node of [...list.childNodes]) {
    node.remove();
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

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

Ваша версія секції «»: після перевірки замінить чинну.

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

Ваша версія опису «»: після перевірки замінить чинну.

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

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