Anoniminių funkcijų atjungimas JavaScript
Tarkime, kad mūsų pastraipoms yra pririšta anoniminė funkcija:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Tarkime, kad norime atjungti šią funkciją nuo pastraipos po paspaudimo ant šios pastraipos. Tačiau mus laukia problema: funkcija neturi pavadinimo, o tai reiškia kad negalėsime kreiptis į ją pagal šį pavadinimą, kad ją atjungtume.
Problemai išspręsti reikia suteikti funkcijai pavadinimą, pavertus ją į pavadintą funkcinę išraišką. Padarykime tai:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // suteikėme funkcijai pavadinimą
console.log(this.textContent);
});
}
Dabar šią funkciją galima atjungti jos pačios viduje:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // atjungiame funkciją
});
}
Duotas sąrašas ul, kuriame kiekviename punkte
įrašytas skaičius. Padarykite taip, kad paspaudus
bet kurią li jos skaičius padidėtų
vienetu.
Modifikuokite ankstesnę užduotį taip,
kad kiekviena li padidintų savo
reikšmę tik pirmu paspaudimu
ant jos.
Modifikuokite ankstesnę užduotį taip,
kad kiekviena li padidintų savo
reikšmę tik jei jos reikšmė
mažesnė už 10.