Одвајање анонимних функција у JavaScript-у
Претпоставимо сада да је нашим параграфима везана анонимна функција:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Претпоставимо да желимо да одвежемо ову функцију од параграфа након клика на тај параграф. Међутим, чека нас проблем: функција нема име, што значи да се нећемо моћи обратити њој по том имену, да бисмо је одвезали.
За решење проблема потребно је дати име функцији, претварајући је у именовани функцијски израз. Хајде да то урадимо:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // дали име функцији
console.log(this.textContent);
});
}
Сада се ова функција може одвезати унутар саме себе:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // одвезујемо функцију
});
}
Дата је листа ul, у чијем је сваком елементу
записана број. Направите да се при
клику на било коју li њен број увећава
за један.
Модификујте претходни задатак тако,
да свака li увећава своју
вредност само при првом притиску
на њу.
Модификујте претходни задатак тако,
да свака li увећава своју
вредност само ако је њена вредност
мања од 10.