Avlänkning av anonyma funktioner i JavaScript
Låt oss nu anta att våra stycken är bundna till en anonym funktion:
let 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:
let 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:
let 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
});
}
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.
Modifiera den föregående uppgiften så
att varje li endast ökar sitt
värde vid första klicket
på den.
Modifiera den föregående uppgiften så
att varje li endast ökar sitt
värde om dess värde
är mindre än 10.