Отмятане на анонимни функции в JavaScript
Нека сега към нашите параграфи е прикачена анонимна функция:
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.