Anoniminių funkcijų atjungimas JavaScript

Tarkime, kad mūsų pastraipoms yra pririšta anoniminė funkcija:

javascriptlet 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:

javascriptlet 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:

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

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

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.

Задание 2

Modifikuokite ankstesnę užduotį taip, kad kiekviena li padidintų savo reikšmę tik pirmu paspaudimu ant jos.

Задание 3

Modifikuokite ankstesnę užduotį taip, kad kiekviena li padidintų savo reikšmę tik jei jos reikšmė mažesnė už 10.