Этап 5 из 19 · ≈ 6 ч

DOM и события

Основа с Junior

Поиск и изменение элементов, обработчики, всплытие и делегирование событий.

DOM — дерево объектов, которое браузер строит из HTML. JavaScript может находить узлы, менять их и подписываться на события.

const list = document.querySelector("#todo");
list.addEventListener("click", (e) => {
  const item = e.target.closest("li[data-id]");
  if (item) remove(item.dataset.id);       // делегирование
});

Что важно знать

  • Событие идёт в три фазы: перехват сверху вниз, цель, всплытие снизу вверх. Обработчики по умолчанию — на всплытии.
  • Делегирование: один обработчик на родителе вместо сотни на элементах — работает и для элементов, добавленных позже.
  • e.target — где произошло событие, e.currentTarget — где висит обработчик.
  • preventDefault() отменяет действие браузера, stopPropagation() — всплытие (злоупотреблять не стоит).
  • Частые события (scroll, input, resize) — через debounce или throttle; пассивные обработчики прокрутки.
  • Массовые изменения DOM — пачкой (DocumentFragment, replaceChildren), без чтения размеров между записями.
  • textContent вместо innerHTML для пользовательских данных — защита от XSS.

Критерии освоения

Junior ≈ 6 ч

  • Находит и изменяет элементы DOM, вешает и снимает обработчики
  • Применяет делегирование событий и объясняет всплытие и перехват
  • Вставляет пользовательские данные через textContent, а не innerHTML

Практика. Сделать список задач на чистом JS с добавлением, удалением и фильтрацией через один делегированный обработчик.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Что такое всплытие и перехват событий и как работает делегирование?Junior

Событие проходит три фазы: перехват (от window вниз к цели), цель, всплытие (от цели вверх). Обработчики по умолчанию срабатывают на всплытии. Делегирование — один обработчик на родителе ловит события детей через всплытие и определяет источник по event.target…

Полный разбор
Чем debounce отличается от throttle?Junior

Debounce — вызвать функцию, только когда события прекратились на N мс: поиск по вводу, сохранение черновика, resize. Throttle — вызывать не чаще раза в N мс, пока события идут: прокрутка, движение мыши, отслеживание позиции.

Полный разбор
Как найти и изменить элементы DOM на JavaScript?Junior

Найти: querySelector(css-селектор) — первый элемент, querySelectorAll — статический список. Изменить: textContent — текст (безопасно), innerHTML — разметка (опасно с пользовательскими данными — XSS), classList.add/remove/toggle, setAttribute, dataset…

Полный разбор
Как работает event loop в JavaScript — макрозадачи и микрозадачи?Junior

JavaScript выполняется в одном потоке. Цикл событий берёт одну макрозадачу (скрипт, setTimeout, событие, сетевой ответ), выполняет её до конца, затем все микрозадачи (then у промисов, await-продолжения, queueMicrotask), затем при необходимости отрисовку, и…

Полный разбор

Документация

← Вся карта «Frontend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования