Übergabe eines Callbacks zur DOM-Manipulation in JavaScript

Nehmen wir an, wir haben eine Gruppe von DOM-Elementen:

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>

Erstellen wir eine Funktion forEach, die als ersten Parameter einen Selektor für eine Elementgruppe und als zweiten Parameter eine Callback-Funktion annimmt, die der Reihe nach auf jedes der gefundenen Elemente angewendet wird:

javascriptforEach('.elem', function() {
  // Die Funktion wird auf jedes Element angewendet
});

Die Elemente, die dem Selektor entsprechen, sollen nacheinander als erster Parameter an den Callback übergeben werden:

javascriptforEach('.elem', function(elem) {
  console.log(elem); // gibt der Reihe nach die gefundenen Elemente aus
});

Verwenden wir unsere Funktion, um alle Elemente mit der Klasse elem zu finden und für jedes gefundene Element einen Callback anzuwenden, der den Text jedes Elements quadriert:

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

Implementieren wir nun die von uns geplante Funktion forEach:

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

Es sind Absätze gegeben. Verwenden Sie die von uns erstellte Funktion forEach, um für jeden Absatz ein Ausrufezeichen an das Ende seines Textes anzuhängen.