Выбор ответа Middle DOM API обновлено

Удаление элементов из живой коллекции

Вопрос

На странице 4 элемента с классом item. Сколько их останется после кода?

const items = document.getElementsByClassName('item');
for (let i = 0; i < items.length; i++) {
  items[i].classList.remove('item');
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 2. getElementsByClassName возвращает живую HTMLCollection.

Варианты ответа

  1. 0
  2. 1
  3. 4
  4. 2правильный ответ

Разбор

getElementsByClassName возвращает живую HTMLCollection. Когда у элемента убирают класс, он сразу выпадает из коллекции, остальные сдвигаются, а i растёт. Итерации: i=0 убирает первый (в коллекции 3), i=1 убирает третий исходный (в коллекции 2), i=2 уже не меньше длины 2. Останется 2 элемента. Ответ 0 был бы при статичном снимке (querySelectorAll). 4 означало бы, что коллекция не меняется вообще, а 1 не совпадает с ходом цикла.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме