Junior
108
questionbank
В чем разница между методами .getElementsByClassName и .querySelectorAll?
Ответ от нейросети
sobes.tech AI
getElementsByClassName возвращает живую коллекцию HTMLCollection элементов с указанным классом. Изменения в DOM отражаются вコレクション автоматически. Этот метод доступен только для элементов и документа.
querySelectorAll возвращает статичную коллекцию NodeList всех элементов, соответствующих CSS-селектору (или группе селекторов). Изменения в DOM после вызова метода не влияют на возвращенную коллекцию. Этот метод доступен для элементов, документа и фрагментов документа.
Основные отличия:
| Признак | getElementsByClassName |
querySelectorAll |
|---|---|---|
| Возвращаемый тип | HTMLCollection |
NodeList |
| Тип коллекции | Живая | Статичная |
| Аргумент | Имя класса (string) | CSS-селектор (string) |
| Наличие | Element, Document | Element, Document, DocumentFragment |
| Поддержка | Широкая | Зависит от селектора |
// getElementsByClassName
const elementsByClass = document.getElementsByClassName('my-class');
// changes to DOM will affect elementsByClass
// querySelectorAll
const elementsBySelector = document.querySelectorAll('.my-class, #my-id');
// changes to DOM will NOT affect elementsBySelector