Przekazywanie callbacka do pracy z DOM w JavaScript
Załóżmy, że mamy pewną grupę elementów 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>
Stwórzmy funkcję forEach, która
pierwszym parametrem będzie przyjmować selektor
grupy elementów, a drugim parametrem - funkcję callback,
która zostanie zastosowana kolejno do każdego
znalezionego elementu:
forEach('.elem', function() {
// funkcja zostanie zastosowana do każdego elementu
});
Niech elementy pasujące do selektora kolejno trafią do pierwszego parametru callbacka:
forEach('.elem', function(elem) {
console.log(elem); // wypisze kolejno znalezione elementy
});
Za pomocą naszej funkcji znajdźmy wszystkie
elementy z klasą elem i dla każdego
znalezionego elementu zastosujmy callback,
który podniesie do kwadratu tekst każdego elementu:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Napiszmy teraz implementację zaplanowanej przez nas
funkcji forEach:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
Dane są akapity. Za pomocą stworzonej przez nas funkcji forEach dla każdego akapitu dodaj na końcu jego tekstu wykrzyknik.