
В этом тренажере вы попрактикуетесь удалять обработчики событий, назначенные элементам HTML. Обработчики событий позволяют реагировать на действия пользователя, такие как клики, наведение курсора, нажатие клавиш и т.д. Умение корректно удалять обработчики важно для предотвращения утечек памяти и нежелательного поведения в динамических веб-приложениях. Вам будет предоставлен HTML-код, CSS (если необходимо) и JavaScript-код с пропусками. Ваша задача - заполнить пропуски, чтобы код корректно удалял назначенные обработчики событий. После ввода кода вы сможете выполнить его и увидеть результат.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Удаление простого обработчика
Имеется кнопка. При нажатии на неё, к тексту добавляется фраза 'Привет!'. После нажатия на кнопку 'Удалить обработчик', обработчик события нажатия должен быть удален, и при последующих нажатиях на первую кнопку текст изменяться не должен.
<button id="myButton">Нажми меня</button>
<button id="removeButton">Удалить обработчик</button>
<p id="myText"></p>
const myButton = document.getElementById("myButton");
const removeButton = document.getElementById("removeButton");
const myText = document.getElementById("myText");
function handleClick() {
myText.textContent += "Привет! ";
}
myButton.addEventListener("click", handleClick);
removeButton.addEventListener("click", function() {
myButton.input__1("click", input__2);
});
Удаление обработчика с анонимной функцией
Есть кнопка, при наведении на которую меняется ее фон. Необходимо удалить этот обработчик при нажатии на другую кнопку. Обратите внимание, что обработчик добавлен с помощью анонимной функции, поэтому потребуется внести изменения в код.
<button id="hoverButton">Наведи на меня</button>
<button id="removeHover">Удалить обработчик наведения</button>
const hoverButton = document.getElementById("hoverButton");
const removeHover = document.getElementById("removeHover");
input__1 hoverHandler = function() {
hoverButton.style.backgroundColor = "yellow";
};
hoverButton.addEventListener("mouseover", hoverHandler);
removeHover.addEventListener("click", function() {
hoverButton.removeEventListener(input__2, input__3);
});
Удаление всех обработчиков определенного типа
Кнопке назначено два обработчика события `click`. Один изменяет текст, другой меняет цвет фона. Необходимо удалить все обработчики события `click` при нажатии на другую кнопку.
<button id="multiButton">Кликни меня</button>
<button id="removeAll">Удалить все обработчики</button>
<p id="multiText">Текст</p>
const multiButton = document.getElementById("multiButton");
const removeAll = document.getElementById("removeAll");
const multiText = document.getElementById("multiText");
function changeText() {
multiText.textContent = "Новый текст";
}
function changeColor() {
multiButton.style.backgroundColor = "red";
}
multiButton.addEventListener("click", changeText);
multiButton.addEventListener("click", changeColor);
removeAll.addEventListener("click", function() {
const newButton = multiButton.input__1(input__2);
multiButton.parentNode.replaceChild(newButton, input__3);
});
Удаление обработчика события изменения
Имеется текстовое поле. При вводе текста в это поле, он дублируется под ним в параграфе. Необходимо удалить обработчик события `input` при нажатии на кнопку.
<input type="text" id="myInput">
<p id="output"></p>
<button id="removeInput">Удалить обработчик</button>
const myInput = document.getElementById("myInput");
const output = document.getElementById("output");
const removeInputButton = document.getElementById("removeInput");
function handleInput() {
output.textContent = myInput.value;
}
myInput.addEventListener(input__1, handleInput);
removeInputButton.addEventListener("click", () => {
myInput.removeEventListener(input__2, input__3);
});
Удаление обработчика с методом bind
Есть кнопка. При нажатии на нее выводится сообщение, содержащее переданный при привязке аргумент. Нужно удалить этот обработчик.
<button id="bindButton">Нажми меня (bind)</button>
<button id="removeBind">Удалить обработчик (bind)</button>
<div id="bindOutput"></div>
const bindButton = document.getElementById("bindButton");
const removeBindButton = document.getElementById("removeBind");
const bindOutput = document.getElementById("bindOutput");
function showMessage(message) {
bindOutput.textContent = message;
}
const boundFunction = showMessage.input__1(input__2, "Привет из bind!");
bindButton.addEventListener("click", boundFunction);
removeBindButton.addEventListener("click", function() {
bindButton.removeEventListener(input__3, input__4);
});
Удаление обработчика на изображении
При клике на изображение, оно должно менять свой src. После нажатия на кнопку 'Удалить', клик по изображению не должен приводить к смене картинки.
<img id="myImage" src="https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png" alt="Картинка 1">
<button id="removeImage">Удалить обработчик</button>
const myImage = document.getElementById("myImage");
const removeImageButton = document.getElementById("removeImage");
function changeImage() {
myImage.src = "https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike3-300x300.png";
}
myImage.addEventListener(input__1, changeImage);
removeImageButton.addEventListener("click", function() {
myImage.input__2(input__3, input__4);
});
Удаление обработчика, добавленного через атрибут
Имеется кнопка с обработчиком события `onclick`, назначенным через HTML-атрибут. При нажатии на кнопку, она меняет свой текст. Необходимо удалить этот обработчик при нажатии на другую кнопку.
<button id="attrButton" onclick="changeButtonText()">Нажми меня (атрибут)</button>
<button id="removeAttr">Удалить обработчик (атрибут)</button>
const attrButton = document.getElementById("attrButton");
const removeAttrButton = document.getElementById("removeAttr");
function changeButtonText() {
attrButton.textContent = "Текст изменен!";
}
removeAttrButton.addEventListener("click", function() {
attrButton.input__1 = input__2;
});
Удаление обработчика с использованием this
Имеется кнопка. При нажатии на неё, она меняет свой цвет фона. Необходимо удалить этот обработчик, используя `this` внутри обработчика.
<button id="thisButton">Изменить цвет (this)</button>
const thisButton = document.getElementById("thisButton");
function changeButtonColor() {
this.style.backgroundColor = "green";
input__1.removeEventListener(input__2, input__3);
}
thisButton.addEventListener("click", changeButtonColor);