Дар ҶаваСкрипт дар ҳалқа ҳодисҳоро барҳам додан
Бигзор акнун мо як элемент надорем, балки чандто. Масалан, чандто абзац:
<p>text1</p>
<p>text2</p>
<p>text3</p>
Биёед ба ҳар яке аз ин абзацҳо бо функсияи
клик func-ро бо воситаи коркардкунанда васл кунем:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', func);
}
function func() {
console.log(this.textContent);
}
Биёед акнун кодро тавре тағир диҳем, ки ҳар абзац фақат ба аввалин фишори он ҷавоб диҳад. Барои ин ҳар вақте ки абзацро клик мекунем коркардкунандаи васлшударо аз он ҷудо мекунем. Дар ин ҳол ҷудо кардан аз ин абзац аст, ба дигарон ҳеҷ тавре таъсир намерасонад.
Чунон ки шумо аллакай медонед, унсуре, ки дар он
рӯйдод рӯй додааст, метавон дар функсияи-коркардкунанда
тавассути this гирифт. Ин маънои онро дорад, ки
коркардкунандаро аз this ҷудо кардан лозим аст,
инҳоянд:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', func);
}
function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // коркардкунандаро ҷудо мекунем
}
Абзацҳо дода шудаанд. Ҳангоми фишор ба ҳар яке аз абзацҳо нишонаи восклицанияро ба охири он илова кунед. Чунон кунед, ки ин илова кардан фақат дар аввалин фишор рӯй диҳад.