PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как отловить событие клика в JavaScript?

DOM и браузер

Событие клика ловят методом `addEventListener('click', handler)` на элементе (основной способ) или свойством `onclick`. В React — проп `onClick`.

addEventListener (основной)

const button = document.querySelector('#btn');
button.addEventListener('click', (event) => {
  console.log('Клик по', event.target);
});
  • Несколько обработчиков, опции, снятие.

Свойство onclick

button.onclick = (event) => console.log('клик');
  • Один обработчик.

Делегирование (для многих элементов)

Один обработчик на родителе через всплытие:

list.addEventListener('click', (e) => {
  if (e.target.matches('li')) {
    console.log('клик по', e.target.textContent);
  }
});

Ловит клики по всем потомкам, включая динамических.

В React

<button onClick={(e) => handleClick(e)}>Кнопка</button>
<button onClick={handleClick}>Кнопка</button>

Синтетическое событие; передают функцию (не вызов), для аргументов — стрелку.

Объект события

В обработчик приходит event:

button.addEventListener('click', (e) => {
  e.target;          // элемент-источник
  e.currentTarget;   // элемент с обработчиком
  e.preventDefault(); // отменить действие
  e.stopPropagation(); // остановить всплытие
  e.clientX, e.clientY; // координаты
});

Коротко для собеседования

Клик ловят element.addEventListener('click', handler) (основной — несколько обработчиков, опции) или element.onclick = handler (один). Для многих элементов — делегирование на родителе (через всплытие, event.target). В React — onClick={handler} (синтетическое событие). В обработчик приходит event (target, preventDefault, координаты).

Другие вопросы раздела