javascript - Bagaimana untuk lulus secara dinamik dalam fungsi parameter untuk addEventListener?
phpcn_u1582
phpcn_u1582 2017-05-18 10:50:01
0
5
855

Terdapat jawapan yang tidak diterima pakai untuk "Xiaoxiao Yuxie", yang juga berguna, tetapi saya belum tahu penggunaan khusus let lagi. Maaf, saya benar-benar mahu mengambil dua anak angkat.

Hasilnya pasti
klik butang1 alert(3)
klik butang2 alert(3)

Cara mengubah suai kod untuk membuat
klik butang1 alert(1)
klik butang2 alert(2)

Saya rasa masalah ini agak serupa dengan masalah penutupan klasik iaitu settimeout, tetapi saya tidak dapat memikirkan sebarang penyelesaian.

Sila beri saya nasihat.

phpcn_u1582
phpcn_u1582

membalas semua(5)
phpcn_u1582
function myclick(i){
    return function(){
         alert(i)
    }

Parameter kedua dihantar ke myclick(i)

PHPzhong

Simpan parameter dalam atribut setiap elemen butang.
atau guna let

我想大声告诉你

<button id='myButton1' data-info='abc'></button> Selepas mengklik butang, dapatkan atribut dalam data-info

曾经蜡笔没有小新

Jquery secara amnya mengendalikan DOM Semasa rendering, ia biasanya disambungkan ke DOM dalam format data-*, dan kemudian ia diperoleh dan kemudian digunakan $(this).attr(key)

.
过去多啦不再A梦

Tukar var kepada let

 window.onload = function () {
      for (let i = 1; i < 3; i++) {
        document.getElementById('myButton' + i)
          .addEventListener('click', () => {
            myClick(i)
          })
      }
    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan