Odväzovanie anonymných funkcií v JavaScripte

Nech je teraz k našim odstavcom priviazaná anonymná funkcia:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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
  });
}
Задание 1

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.

Задание 2

Upravte predchádzajúcu úlohu tak, aby každá li zvýšila svoju hodnotu len po prvom stlačení na ňu.

Задание 3

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.