Odvazování anonymních funkcí v JavaScriptu
Nyní předpokládejme, že k našim odstavcům je přivázána anonymní funkce:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Předpokládejme, že chceme odvázat tuto funkci od odstavce po kliknutí na tento odstavec. Čeká nás však problém: funkce nemá název, a proto se na ni nemůžeme odvolat jejím jménem, abychom ji odváželi.
K vyřešení problému je třeba funkci pojmenovat, čímž z ní vytvoříme pojmenovaný funkční výraz. Udělejme to:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // dali jsme funkci jméno
console.log(this.textContent);
});
}
Nyní lze tuto funkci odvázat uvnitř ní samotné:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // odvazujeme funkci
});
}
Je dán seznam ul, v jehož každé položce je
zapsáno číslo. Zařiďte, aby po
kliku na libovolné li se její číslo zvýšilo
o jedničku.
Upravte předchozí úlohu tak,
aby každé li zvýšilo svou
hodnotu pouze po prvním stisknutí
na něj.
Upravte předchozí úlohu tak,
aby každé li zvýšilo svou
hodnotu pouze v případě, že její hodnota
je menší než 10.