DOM:n käsittelyyn tarkoitetun callback-funktion välittäminen JavaScriptissä
Oletetaan, että meillä on joukko DOM-elementtejä:
<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>
Tehdään funktio forEach, joka
ottaa ensimmäisenä parametrina valitsimen
elementtiryhmälle ja toisena parametrina - callback-funktion,
jota sovelletaan vuorotellen jokaiseen
löydettyyn elementtiin:
forEach('.elem', function() {
// funktiota sovelletaan jokaiseen elementtiin
});
Olkoon elementit, jotka osuvat valitsimeen, vuorotellen ensimmäisenä parametrina callback-funktiolle:
forEach('.elem', function(elem) {
console.log(elem); // tulostaa vuorotellen löydetyt elementit
});
Etsitään luomallamme funktiolla kaikki
elementit, joilla on luokka elem ja joille
kohdistetaan callback-funktio, joka
nostaa tekstin jokaisesta elementistä toiseen potenssiin:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Kirjoitetaan nyt toteutus suunnitteilemallemme
funktiolle forEach:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
Annettuna on kappaleita. Käytä luomaamme funktiota forEach lisätäksesi jokaisen kappaleen tekstin loppuun huutomerkin.