JavaScript да циклида ишлайдиган вокеалар ишловчиларини боглаб куйиш

Энди бизда битта элемент эмас, бир нечта элементлар бор деб фараз қилайлик. Масалан, бир нечта абзацлар:

html<p>text1</p>
<p>text2</p>
<p>text3</p>

Келинг, ушбу абзацларнинг ҳар бирига клик вокеаси ишловчиси орқали func функциясини боглаймиз:

javascriptlet elems = document.querySelectorAll('p');

for (let elem of elems) {
  elem.addEventListener('click', func);
}

function func() {
  console.log(this.textContent);
}

Энди кодни қайтадан ясайлик, щунда ҳар бир абзац фақат унинг биринчи боскичига жавоб берсин. Буни амалга ошириш учун абзац устида босилганда уңга богланган ишловчини боглаб куямиз. Бу ҳолда боглаб куйищ фақат мана щу абзац учун амал қилади, қолганларига таъсир кўрсатмайди.

Сиз биласизки, вокеа юз берган элементни функция-ишловчи ичида this орқали олиш мумкин. Демак, ишловчини this дан боглаб куйиш керак, мана щундай:

javascriptlet elems = document.querySelectorAll('p');

for (let elem of elems) {
  elem.addEventListener('click', func);
}

function func() {
  console.log(this.textContent);
  this.removeEventListener('click', func); // ишловчини боглаб куямиз
}
Задание 1

Абзацлар берилган. Ҳар қандай абзац устида босилганда унинг охирига undov белгиси қўшинг. Бу қўшищ фақат биринчи босилганда юз беришини таъминланг.