08. События и обработчики
Что такое событие
Событие — это любое действие пользователя на странице: клик мыши, ввод текста, прокрутка, нажатие клавиши и т.д.Когда пользователь что-то делает на странице, браузер сообщает об этом JavaScript — и мы можем на это отреагировать.
Обработчики событий
Обработчик события — это функция, которая срабатывает, когда происходит определённое действие.Пример: событие клика
let button = document.querySelector('button');button.addEventListener('click', function() {
alert('Кнопка нажата!');
});
Объяснение
- addEventListener() — метод, который «слушает» события.
- Первый параметр — тип события (например, `'click'`).
- Второй параметр — функция, которая выполнится при событии.
Типы событий
JavaScript может реагировать на десятки событий. Самые популярные:- click — клик мыши
- dblclick — двойной клик
- mouseover / mouseout — наведение и уход мыши
- keydown / keyup — нажатие и отпускание клавиши
- input — изменение значения в поле ввода
- submit — отправка формы
- scroll — прокрутка страницы
Пример: наведение мыши
let box = document.querySelector('.box');box.addEventListener('mouseover', () => {
box.style.backgroundColor = 'lightgreen';
});
box.addEventListener('mouseout', () => {
box.style.backgroundColor = 'lightblue';
});
Объект события
При срабатывании обработчика браузер передаёт специальный объект event — он содержит детали о событии.
let btn = document.querySelector('#infoBtn');
btn.addEventListener('click', (event) => {
console.log('Тип события:', event.type);
console.log('Координаты клика:', event.clientX, event.clientY);
});
Популярные свойства event
- type — тип события (например, 'click')
- target — элемент, на котором произошло событие
- clientX, clientY — координаты курсора
- key — клавиша, нажатая пользователем
События клавиатуры
document.addEventListener('keydown', (event) => {
console.log('Вы нажали:', event.key);
});
Пример: реакция на клавишу Enter
let input = document.querySelector('input');input.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
alert('Вы нажали Enter!');
}
});
События форм
Пример: обработка ввода текста
let input = document.querySelector('#name');
input.addEventListener('input', () => {
console.log('Пользователь ввёл:', input.value);
});
Пример: отправка формы
let form = document.querySelector('form');
form.addEventListener('submit', (event) => {
event.preventDefault(); // отменяем стандартную отправку формы
alert('Форма отправлена!');
});
Удаление обработчика события
Иногда нужно перестать слушать событие. Это можно сделать через removeEventListener().
function greet() {
alert('Привет!');
button.removeEventListener('click', greet);
}let button = document.querySelector('#onceBtn');
button.addEventListener('click', greet);
Теперь сообщение появится только при первом клике.
Мини-практика
- Создайте кнопку, которая меняет цвет фона при каждом клике.
- Сделайте поле ввода, которое считает количество введённых символов и показывает результат под ним.
- Реализуйте форму с кнопкой — при отправке выводите сообщение: «Здравствуйте, <имя>!».
Пример решения
let count = 0;
let btn = document.querySelector('#colorBtn');btn.addEventListener('click', () => {
let colors = ['lightblue', 'lightgreen', 'lightcoral', 'lightgoldenrodyellow'];
document.body.style.backgroundColor = colors[count % colors.length];
count++;
});
Советы новичкам
- Используйте addEventListener() вместо атрибутов вроде onclick — так код чище и удобнее поддерживать.
- Если что-то не работает — проверьте, существует ли элемент, прежде чем навешивать на него событие.
- Не забывайте вызывать preventDefault(), если хотите отменить стандартное поведение (например, при сабмите формы).
- Не добавляйте обработчики в цикле без нужды — это может замедлить работу сайта.
Итоги урока
Теперь вы знаете:- Что такое события и как они работают в браузере.
- Как добавлять и удалять обработчики событий.
- Как работать с объектом event и его свойствами.
- Как обрабатывать клики, ввод текста, нажатие клавиш и отправку форм.