События в JavaScript

Типы событий

События в JavaScript включают события мыши, клавиатуры, формы и окна.


// События мыши
document.addEventListener('click', function() {
    console.log('Клик по странице');
});

document.addEventListener('dblclick', function() {
    console.log('Двойной клик по странице');
});

// События клавиатуры
document.addEventListener('keydown', function(event) {
    console.log('Нажата клавиша:', event.key);
});

document.addEventListener('keyup', function(event) {
    console.log('Отпущена клавиша:', event.key);
});
            

Работа с событиями формы

События формы позволяют реагировать на ввод данных пользователем и изменение состояния элементов формы.


// Событие 'input' срабатывает при вводе данных в поле формы
let inputField = document.getElementById('myInput');
inputField.addEventListener('input', function() {
    console.log('Изменение значения:', inputField.value);
});

// Событие 'change' срабатывает при изменении значения элемента формы
let selectField = document.getElementById('mySelect');
selectField.addEventListener('change', function() {
    console.log('Выбранный вариант:', selectField.value);
});
            

Отмена действия по умолчанию

События в JavaScript могут иметь действия по умолчанию, которые можно отменить, используя метод preventDefault().


// Отмена отправки формы
let form = document.getElementById('myForm');
form.addEventListener('submit', function(event) {
    event.preventDefault(); // Отмена отправки формы
    console.log('Отправка формы отменена');
});

// Отмена перехода по ссылке
let link = document.getElementById('myLink');
link.addEventListener('click', function(event) {
    event.preventDefault(); // Отмена перехода по ссылке
    console.log('Переход по ссылке отменен');
});
            

Всплытие и захват событий

События в DOM могут "всплывать" от вложенных элементов к внешним или захватываться внешними элементами перед тем, как достичь цели. Это поведение можно контролировать.


// Всплытие событий
document.getElementById('child').addEventListener('click', function() {
    console.log('Клик по элементу child');
});

document.getElementById('parent').addEventListener('click', function() {
    console.log('Клик по элементу parent');
});

// Захват событий
document.getElementById('parent').addEventListener('click', function() {
    console.log('Клик по элементу parent (захват)');
}, true);

document.getElementById('child').addEventListener('click', function() {
    console.log('Клик по элементу child (захват)');
}, true);