JavaScript querySelectorAll() — усі елементи за CSS-селектором


Метод querySelectorAll() знаходить усі елементи, що відповідають CSS-селектору.

автор: NagarD

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

Повертає NodeList — і тут два нюанси, які варто знати.

Перший: список не живий. Це знімок на мить виклику: додаси новий елемент — у списку його не буде. (На відміну від getElementsByClassName(), який живий і саме тому дає химерні баги в циклах.)

Другий: це не масив. У нього є forEach(), але немає map(), filter(), reduce(). Потрібні вони — розгорни спредом: [...list].

Нічого не знайшов — повертає порожній список, а не null. Тому перевіряти на null не треба, а от length — варто.

автор: NagarD

Порада

[...document.querySelectorAll('li')] — і далі працюють усі методи масиву. Це найчастіший рядок у щоденному коді.

автор: NagarD

Переглядачі

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

Приклади

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

Не живий і не масив — обидві особливості в дії.

HTML

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

JS

const items = document.querySelectorAll('.item');

console.log(items.length); // 2
items.forEach(item => console.log(item.textContent));

// НЕ живий: додали елемент — у списку його немає
list.append(document.createElement('li'));
console.log(items.length); // усе ще 2

// не масив: map() немає
// items.map(...) → TypeError

// розгортаємо — і всі методи масиву на місці
const texts = [...items].map(item => item.textContent);

// не знайшов — порожній список, а не null
console.log(document.querySelectorAll('.missing').length); // 0
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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