Пусть теперь к нашим абзацам привязана анонимная функция:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Пусть мы хотим отвязать эту функцию от абзаца после клика по этому абзацу. Нас, однако, ждет проблема: у функции нет имени, а значит мы не сможем обратится к ней по этому имени, чтобы отвязать ее.
Для решения проблему нужно дать имя функции, сделав из нее именованное функциональное выражение. Сделаем это:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // дали имя функции
console.log(this.textContent);
});
}
Теперь эту функцию можно отвязать внутри нее самой:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // отвязываем функцию
});
}
Дан список ul
, в каждом пункте которого
записано число. Сделайте так, чтобы по
клику на любую li
ее число увеличивалось
на единицу.
Модифицируйте предыдущую задачу так,
чтобы каждая li
увеличивала свое
значение только по первому нажатию
на нее.
Модифицируйте предыдущую задачу так,
чтобы каждая li
увеличивала свое
значение только если ее значение
меньше 10
.