Подаване на callback за работа с DOM на JavaScript
Да предположим, че имаме определена група от 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>
Нека направим функция forEach, която
първият параметър ще приеме селектор
на група от елементи, а вторият параметър - функция-callback,
която ще се приложи последователно към всеки от
намерените елементи:
forEach('.elem', function() {
// функцията ще се приложи към всеки елемент
});
Нека елементите, попаднали под селектора, последователно да влизат в първия параметър на callback функцията:
forEach('.elem', function(elem) {
console.log(elem); // ще изведе последователно намерените елементи
});
Нека с помощта на нашата функция намерим всички
елементи с клас elem и за всеки
намерен елемент приложим callback, който
ще повдигне на квадрат текста на всеки елемент:
forEach('.elem', function(elem) {
elem.textContent = elem.textContent ** 2;
});
Сега нека напишем реализацията на предназначената
от нас функция forEach:
function forEach(selector, func) {
let elems = document.querySelectorAll(selector);
for (let elem of elems) {
func(elem);
}
}
Дадени са параграфи. С помощта на създадената от нас функция forEach за всеки параграф добавете в края на неговия текст удивителен знак.