Rumah > hujung hadapan web > tutorial js > Mengapa Pengendali Acara dalam Gelung JavaScript Merujuk kepada Pembolehubah Yang Sama?

Mengapa Pengendali Acara dalam Gelung JavaScript Merujuk kepada Pembolehubah Yang Sama?

DDD
Lepaskan: 2024-11-05 20:36:02
asal
701 orang telah melayarinya

Why Do Event Handlers in JavaScript Loops Refer to the Same Variables?

Bekerja dengan Pengendali Acara dalam Gelung JavaScript: Menggunakan Penutupan untuk Pengendalian Acara yang Berbeza

Dalam JavaScript, apabila bekerja dengan kod HTML, pengendali acara bermain peranan penting dalam membolehkan interaksi pengguna dengan halaman web. Walau bagaimanapun, cabaran biasa timbul apabila pengendali acara ini ditakrifkan dalam gelung, yang membawa kepada gelagat yang tidak dijangka.

Untuk menggambarkan isu ini, pertimbangkan coretan kod berikut:

<code class="javascript">var blah = xmlres.getElementsByTagName('blah');
for(var i = 0; i < blah.length; i++) {
    var td = document.createElement('td');
    var select = document.createElement('select');
    select.setAttribute("...", "...");
    select.onchange = function() {
        onStatusChanged(select, callid, anotherid);
    };
    td.appendChild(select);
}
Salin selepas log masuk

Apabila berlaku perubahan peristiwa dicetuskan untuk elemen, bukti empirikal menunjukkan bahawa nilai yang sama dihantar kepada kaedah onStatusChanged(), tanpa mengira