Odvazování anonymních funkcí v JavaScriptu

Nyní předpokládejme, že k našim odstavcům je přivázána anonymní funkce:

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

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

javascriptlet elems = document.querySelectorAll('p');

for (let elem of elems) {
  elem.addEventListener('click', function func() {
    console.log(this.textContent);
    this.removeEventListener('click', func); // odvazujeme funkci
  });
}
Задание 1

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.

Задание 2

Upravte předchozí úlohu tak, aby každé li zvýšilo svou hodnotu pouze po prvním stisknutí na něj.

Задание 3

Upravte předchozí úlohu tak, aby každé li zvýšilo svou hodnotu pouze v případě, že její hodnota je menší než 10.