Afbinding af anonyme funktioner i JavaScript
Lad os nu antage, at vores afsnit har en anonym funktion bundet til sig:
javascriptlet elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Lad os sige, at vi vil afbinde denne funktion fra afsnittet efter et klik på afsnittet. Vi støder imidlertid på et problem: funktionen har ikke noget navn, hvilket betyder at vi ikke kan henvise til den ved navn for at afbinde den.
For at løse problemet skal vi give funktionen et navn, ved at lave den om til et navngivet funktionsudtryk. Lad os gøre dette:
javascriptlet elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // gav funktionen et navn
console.log(this.textContent);
});
}
Nu kan denne funktion afbindes inde i den selv:
javascriptlet elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // afbinder funktionen
});
}
Der gives en liste ul, hvor hvert punkt indeholder
et tal. Gør sådan, at ved
et klik på enhver li øges dens tal
med én.
Modificer den forrige opgave sådan,
at hver li kun øger sin
værdi ved første tryk
på den.
Modificer den forrige opgave sådan,
at hver li kun øger sin
værdi hvis dens værdi
er mindre end 10.