Odvezivanje anonimnih funkcija u JavaScript
Pretpostavimo da je sada na naše pasuse vezana anonimna funkcija:
let 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:
let 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:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // odvezujemo funkciju
});
}
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.
Modifikujte prethodni zadatak tako,
da svaka li povećava svoju
vrednost samo pri prvom pritisku
na nju.
Modifikujte prethodni zadatak tako,
da svaka li povećava svoju
vrednost samo ako je njena vrednost
manja od 10.