Transmiterea unui callback pentru lucrul cu DOM în JavaScript

Să presupunem că avem un grup de elemente DOM:

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>

Să creăm funcția forEach, care va primi ca prim parametru un selector al grupului de elemente, iar ca al doilea parametru - o funcție-callback, care se va aplica pe rând fiecăruia dintre elementele găsite:

javascriptforEach('.elem', function() {
  // funcția se va aplica fiecărui element
});

Să considerăm că elementele care se potrivesc selectorului, pe rând, ajung în primul parametru al callback-ului:

javascriptforEach('.elem', function(elem) {
  console.log(elem); // va afișa pe rând elementele găsite
});

Să folosim funcția noastră pentru a găsi toate elementele cu clasa elem și pentru fiecare element găsit să aplicăm un callback care va ridica la pătrat textul fiecărui element:

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

Să scriem acum implementarea funcției forEach pe care am conceput-o:

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

Sunt date paragrafe. Folosind funcția noastră creată forEach, pentru fiecare paragraf adăugați la sfârșitul textului său un semn de exclamare.