Membatalkan Pengikatan Fungsi Tanpa Nama dalam JavaScript
Katakan sekarang kepada perenggan kami terikat satu fungsi tanpa nama:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Katakan kita ingin membatalkan pengikatan fungsi ini daripada perenggan selepas klik pada perenggan ini. Namun, kita akan menghadapi masalah: fungsi itu tidak mempunyai nama, yang bermaksud kita tidak boleh merujuk kepadanya dengan nama itu untuk membatalkan pengikatannya.
Untuk menyelesaikan masalah, kita perlu memberikan nama kepada fungsi itu, menjadikannya ungkapan fungsian bernama. Mari lakukan ini:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // memberikan nama kepada fungsi
console.log(this.textContent);
});
}
Sekarang fungsi ini boleh dibatalkan pengikatannya di dalam fungsi itu sendiri:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // batalkan pengikatan fungsi
});
}
Diberi senarai ul, di mana setiap item
merekodkan satu nombor. Lakukan supaya
apabila klik pada mana-mana li nombornya meningkat
sebanyak satu.
Ubah suai tugas sebelumnya supaya
setiap li meningkatkan
nilainya hanya pada tekan pertama
padanya.
Ubah suai tugas sebelumnya supaya
setiap li meningkatkan nilainya
hanya jika nilainya
kurang daripada 10.