Passando um callback para trabalhar com DOM em JavaScript
Suponha que temos um grupo de elementos 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>
Vamos criar uma função forEach que
aceitará como primeiro parâmetro um seletor
de um grupo de elementos e como segundo parâmetro - uma função de callback,
que será aplicada sequencialmente a cada um dos
elementos encontrados:
forEach('.elem', function() {
// a função será aplicada a cada elemento
});
Suponha que os elementos que correspondem ao seletor sejam passados sequencialmente para o primeiro parâmetro do callback:
forEach('.elem', function(elem) {
console.log(elem); // exibirá os elementos encontrados um por um
});
Vamos usar nossa função para encontrar todos
os elementos com a classe elem e para cada
elemento encontrado, aplicar um callback que
elevará ao quadrado o texto de cada elemento:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Agora vamos escrever a implementação da nossa função
forEach:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
Existem parágrafos. Usando a função que criamos, forEach, adicione um ponto de exclamação ao final do texto de cada parágrafo.