Mengapa Javascript's removeEventListener tidak Berfungsi?
Apabila cuba mengalih keluar pendengar acara, pengguna mungkin menghadapi kesukaran, yang membawa kepada persoalan sama ada terdapat masalah dengan pelaksanaannya. Untuk menangani kebimbangan ini, mari analisa kod yang disediakan.
Dalam contoh yang diberikan, pendengar acara dilampirkan pada elemen bernama kawasan untuk acara klik. Walau bagaimanapun, apabila cuba mengalih keluar pendengar kemudian dalam fungsi lain, ia gagal dialih keluar.
Punca kegagalan ini terletak pada fakta bahawa dua fungsi tanpa nama yang diserahkan kepada addEventListener dan removeEventListener adalah fungsi yang berbeza. Walaupun kedua-duanya mengendalikan acara klik pada kawasan, mereka bukan objek fungsi yang sama. Akibatnya, mengalih keluar pendengar acara menggunakan rujukan fungsi tanpa nama yang sama daripada addEventListener tidak akan berfungsi.
Untuk menyelesaikan isu ini, adalah perlu untuk menggunakan rujukan fungsi tanpa nama yang sama untuk menambah dan mengalih keluar pendengar acara. Ini memastikan bahawa fungsi removeEventListener boleh menyasarkan dan mengalih keluar pendengar khusus yang telah ditambahkan sebelum ini dengan betul.
Berikut ialah contoh coretan kod yang diperbetulkan:
<code class="javascript">function foo(event) { app.addSpot(event.clientX,event.clientY); app.addFlag = 1; } area.addEventListener('click',foo,true); area.removeEventListener('click',foo,true);</code>
Dengan menggunakan fungsi bernama seperti foo untuk pengendali acara, objek fungsi yang sama boleh dirujuk untuk menambah dan mengalih keluar pendengar acara, menjamin pendengar dialih keluar dengan betul apabila dikehendaki.
Atas ialah kandungan terperinci Mengapa JavaScript Saya Tidak `removeEventListener` Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!