DOM:n käsittelyyn tarkoitetun callback-funktion välittäminen JavaScriptissä

Oletetaan, että meillä on joukko DOM-elementtejä:

html<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:

javascriptforEach('.elem', function() {
  // funktiota sovelletaan jokaiseen elementtiin
});

Olkoon elementit, jotka osuvat valitsimeen, vuorotellen ensimmäisenä parametrina callback-funktiolle:

javascriptforEach('.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:

javascriptforEach('.elem', function(elem) {
  elem.textContent = elem.textContent ** 2;
});

Kirjoitetaan nyt toteutus suunnitteilemallemme funktiolle forEach:

javascriptfunction forEach(selector, func) {
  let elems = document.querySelectorAll(selector);
  
  for (let elem of elems) {
    func(elem);
  }
}
Задание 1

Annettuna on kappaleita. Käytä luomaamme funktiota forEach lisätäksesi jokaisen kappaleen tekstin loppuun huutomerkin.