- Теория
- Теория
Статичные и живые коллекции
Мы нашли проблему — длина коллекции items
не меняется при удалении задач из списка. Почему так происходит?
querySelectorAll
находит необходимые элементы один раз, фиксирует их и всё. Эта запись остаётся статичной и изменения в DOM на неё никак не влияют. Можно сказать, что querySelectorAll
работает, как любая переменная, в которую мы записали какое-нибудь значение. Пока мы не переопределим переменную, в ней так и будет находиться то значение, которое мы в неё записали, независимо от того, что происходит в коде.
Поэтому такая коллекция называется статичной.
Кроме статичных существуют живые коллекции элементов, их ещё называют динамическими. Динамические коллекции реагируют на изменения в DOM. Если один из элементов коллекции будет удалён из DOM, то он пропадёт и из коллекции. Есть несколько способов с помощью которых можно получить живую коллекцию, один из них children
. Он вызывается на родительском элементе и собирает все дочерние элементы в динамическую коллекцию. Синтаксис такой:
parentElement.children;
Проверим на практике, как работают живые коллекции. Заменим querySelectorAll
на children
в нашем коде и проверим, как будет работать программа.
В консоли рядом с коллекцией выводится NodeList
. Что это?
Это тип этой коллекции, такой тип возвращает querySelectorAll
и ряд других методов. Особенность такой коллекции в том, что она может содержать не только DOM-элементы вроде li
или div
, но и перенос строки, текстовое содержимое элементов в качестве отдельных элементов коллекции. NodeList
может быть статичной или динамической, это зависит от того, каким способом она вызвана. Можете подробней почитать о коллекциях такого типа в спецификации и на MDN.
- index.html
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.