Overførsel af callback til DOM-manipulation i JavaScript
Lad os sige, at vi har en gruppe af DOM-elementer:
<p class="elem">1</p>
<p class="elem">2</p>
<p class="elem">3</p>
<p class="elem">4</p>
<p class="elem">5</p>
Lad os lave en funktion forEach, som
tager en selektor for en gruppe af elementer som første parameter,
og en callback-funktion som anden parameter,
som vil blive anvendt på hvert af de fundne elementer efter tur:
forEach('.elem', function() {
// funktionen vil blive anvendt på hvert element
});
Lad de elementer, der matcher selektoren, komme ind i den første parameter af callback'en efter tur:
forEach('.elem', function(elem) {
console.log(elem); // vil udskrive de fundne elementer efter tur
});
Lad os ved hjælp af vores funktion finde alle
elementer med klassen elem og for hvert
fundet element anvende en callback, som
kvadrerer teksten i hvert element:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Lad os nu skrive implementationen af den funktion forEach, vi har tænkt os:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
Der gives afsnit. Ved hjælp af den funktion, vi har oprettet, forEach, tilføj et udråbstegn til slutningen af hvert afsnits tekst for hvert afsnit.