Odväzovanie anonymných funkcií v JavaScripte
Nech je teraz k našim odstavcom priviazaná anonymná funkcia:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Predpokladajme, že chceme odvázať túto funkciu od odstavca po kliknutí na tento odsek. Nás však čaká problém: funkcia nemá meno, čo znamená, že sa na ňu nemôžeme odvolať pod týmto menom, aby sme ju odviazali.
Na vyriešenie problému je potrebné dať funkcii meno, čím z nej urobíme pomenovaný funkčný výraz. Urobme to:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // dali sme meno funkcii
console.log(this.textContent);
});
}
Teraz je možné túto funkciu odvázať vnútri nej samej:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // odväzujeme funkciu
});
}
Daný zoznam ul, v každom bode ktorého
je zapísané číslo. Zaistite, aby sa
kliknutím na ľubovoľnú li jej číslo zvýšilo
o jednu.
Upravte predchádzajúcu úlohu tak,
aby každá li zvýšila svoju
hodnotu len po prvom stlačení
na ňu.
Upravte predchádzajúcu úlohu tak,
aby každá li zvýšila svoju
hodnotu len v prípade, že jej hodnota
je menšia ako 10.