JavaScript Essentials

Урок 09 · 12 хв

Події й форми

Клік, введення, надсилання форми — точки, у яких запускається твій код.

Доки на сторінці нічого не відбувається, твій код мовчить. Запускають його події: клік, введення в поле, надсилання форми. Ти вішаєш обробник і описуєш, що робити.

addEventListener

Перший аргумент — ім'я події рядком ("click", "input", "submit"), другий — функція, яку викличуть. Обробників на одному елементі може бути скільки завгодно: вони не затирають одне одного, а виконуються по черзі.

Об'єкт події
AI

Можна спитати про це правило«target — не те саме, що currentTarget»

AI

Можна спитати про цей пункт«Суть уроку»

Форми

submit і preventDefault

За замовчуванням submit перезавантажує сторінку й губить увесь стан. preventDefault() це скасовує. Обробник вішай на саму форму, а не на кнопку: тоді спрацює і клік по кнопці, і Enter у полі.

Читання поля
AI

Можна спитати про цей пункт«Форми»

Делегування

Один обробник на весь список

Обробник висить на батькові й ловить кліки по всіх нащадках, бо подія спливає вгору деревом. Це єдиний зручний спосіб обробити елементи, яких ще немає: додав новий li — він запрацює сам, вішати нічого не треба.

  • event.target.closest("li") — найближчий відповідний предок, враховуючи сам елемент.
  • if (!row) return — клік міг прийти повз, по порожньому місцю контейнера.
  • Зняти обробник можна лише за тим самим посиланням на функцію, яке вішав. Стрілку, написану просто у виклику, зняти не вийде.
  • Для submit майже завжди потрібен preventDefault. Для кліку по посиланню — теж, якщо обробляєш перехід сам.
AI

Можна спитати про цей пункт«Делегування»

Перевірка

Закріпи, поки не пішов далі

  1. 1. Що буде, якщо не викликати preventDefault в обробнику submit?

  2. 2. Клацнули по span усередині кнопки. Що лежить в event.target?

  3. 3. Навіщо вішати один обробник на батька, а не на кожен пункт?

  4. 4. Який тип у input.value для поля з type="number"?