Transmiterea unui callback pentru lucrul cu DOM în JavaScript
Să presupunem că avem un grup de elemente DOM:
<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:
forEach('.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:
forEach('.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:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Să scriem acum implementarea funcției forEach
pe care am conceput-o:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
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.