Odvezivanje anonimnih funkcija u JavaScript

Pretpostavimo da je sada na naše pasuse vezana anonimna funkcija:

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

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

Pretpostavimo da želimo da odvezemo ovu funkciju od pasusa nakon klika na taj pasus. Međutim, suočićemo se sa problemom: funkcija nema ime, što znači da joj ne možemo pristupiti preko tog imena, da bismo je odvezali.

Za rešenje problema, potrebno je dati ime funkciji, pretvarajući je u imenovani funcionalni izraz. Učinimo to:

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

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

Sada se ova funkcija može odvezati unutar sebe same:

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

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

Dat je spisak ul, u čijoj je svakoj stavci zapisano po jedan broj. Uredite tako da klikom na bilo koju li njen broj bude povećan za jedan.

Задание 2

Modifikujte prethodni zadatak tako, da svaka li povećava svoju vrednost samo pri prvom pritisku na nju.

Задание 3

Modifikujte prethodni zadatak tako, da svaka li povećava svoju vrednost samo ako je njena vrednost manja od 10.