Avlänkning av anonyma funktioner i JavaScript

Låt oss nu anta att våra stycken är bundna till en anonym funktion:

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

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

Låt oss säga att vi vill koppla bort denna funktion från stycket efter ett klick på detta stycke. Vi kommer dock möta ett problem: funktionen har inget namn, vilket betyder att vi inte kan referera till den med det namnet för att koppla bort den.

För att lösa problemet måste du ge funktionen ett namn, genom att göra den till ett namngivet funktionsuttryck. Låt oss göra det:

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

for (let elem of elems) {
  elem.addEventListener('click', function func() { // gav funktionen ett namn
    console.log(this.textContent);
  });
}

Nu kan denna funktion kopplas bort inuti sig själv:

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

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

Given en lista ul, där varje punkt innehåller ett nummer. Gör så att när man klickar på vilken li som helst så ökar dess nummer med ett.

Задание 2

Modifiera den föregående uppgiften så att varje li endast ökar sitt värde vid första klicket på den.

Задание 3

Modifiera den föregående uppgiften så att varje li endast ökar sitt värde om dess värde är mindre än 10.