Doorgeven van een callback voor DOM-manipulatie in JavaScript
Stel dat we een groep DOM-elementen hebben:
<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>
Laten we een functie forEach maken die
als eerste parameter een selector van een groep
elementen accepteert, en als tweede parameter - een callback-functie
die achtereenvolgens op elk van de gevonden elementen
wordt toegepast:
forEach('.elem', function() {
// de functie wordt op elk element toegepast
});
Laat de elementen die voldoen aan de selector achtereenvolgens in de eerste parameter van de callback terechtkomen:
forEach('.elem', function(elem) {
console.log(elem); // geeft achtereenvolgens de gevonden elementen weer
});
Laten we met behulp van onze functie alle
elementen met de klasse elem vinden en voor elk
gevonden element een callback toepassen die
de tekst van elk element kwadrateert:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Laten we nu de implementatie schrijven van de
functie forEach die we in gedachten hadden:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
Er worden alinea's gegeven. Voeg met behulp van onze gemaakte functie forEach voor elke alinea een uitroepteken toe aan het einde van de tekst.