Sobes.tech
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