Odvezovanje anonimnih funkcij v JavaScript

Recimo, da je na naše odstavke vezana anonimna funkcija:

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

for (let elem of elems) {
  elem.addEventListener('click', function() {
    console.log(this.textContent);
  });
}

Recimo, da želimo odvezati to funkcijo od odstavka po kliku na ta odstavek. Vendar nas čaka težava: funkcija nima imena, kar pomeni da se je ne bomo mogli sklicevati po tem imenu, da bi jo odvezali.

Za rešitev težave je treba funkciji dati ime, in jo spremeniti v poimenovani funkcionalni izraz. Naredimo to:

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

for (let elem of elems) {
  elem.addEventListener('click', function func() { // dali ime funkciji
    console.log(this.textContent);
  });
}

Zdaj lahko to funkcijo odvežemo znotraj nje same:

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

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

Podan seznam ul, v vsaki točki katerega je zapisano število. Naredite tako, da ob kliku na katero koli li se njena številka poveča za ena.

Задание 2

Spremenite prejšnjo nalogo tako, da vsaka li poveča svojo vrednost le ob prvem pritisku nanjo.

Задание 3

Spremenite prejšnjo nalogo tako, da vsaka li poveča svojo vrednost le, če je njena vrednost manjša od 10.