АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
⊗jsPmDmAHU 363 of 505 menu

Адвязванне ананімных функцый у 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.

byenru