Откачане на манипулатори на събития в цикъл в JavaScript
Нека сега имаме не един елемент, а няколко. Например, няколко параграфа:
<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); // откачаме манипулатора
}
Дадени са параграфи. При натискане на който и да е от параграфите добавете в края му удивителен знак. Направете така, че това добавяне да се случва само при първото натискане.