Odvezovanje anonimnih funkcij v JavaScript
Recimo, da je na naše odstavke vezana anonimna funkcija:
let 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:
let 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:
let 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
});
}
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.
Spremenite prejšnjo nalogo tako,
da vsaka li poveča svojo
vrednost le ob prvem pritisku
nanjo.
Spremenite prejšnjo nalogo tako,
da vsaka li poveča svojo
vrednost le, če je njena vrednost
manjša od 10.