Odłączanie anonimowych funkcji w JavaScript
Załóżmy teraz, że do naszych akapitów jest podpięta anonimowa funkcja:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Załóżmy, że chcemy odłączyć tę funkcję od akapitu po kliknięciu w ten akapit. Czeka nas jednak problem: funkcja nie ma nazwy, a więc nie będziemy mogli odwołać się do niej po tej nazwie, aby ją odłączyć.
Aby rozwiązać problem, należy nadać funkcji nazwę, zamieniając ją w wyrażenie funkcyjne nazwane. Zróbmy to:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // nadaliśmy nazwę funkcji
console.log(this.textContent);
});
}
Teraz tę funkcję można odłączyć wewnątrz niej samej:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // odłączamy funkcję
});
}
Dana jest lista ul, w której każdy punkt zawiera
liczbę. Spraw, aby po
kliknięciu na dowolny element li jego liczba zwiększała się
o jeden.
Zmodyfikuj poprzednie zadanie tak,
aby każdy element li zwiększał swoją
wartość tylko po pierwszym naciśnięciu
na niego.
Zmodyfikuj poprzednie zadanie tak,
aby każdy element li zwiększał swoją
wartość tylko wtedy, gdy jej wartość
jest mniejsza od 10.