Kode saya untuk menambahkan fungsi onclick adalah sebagai berikutnewbutton.onclick = whoWon(this.id)

Kode Terkait Lainnya

var winner;

function whoWon(name){
   winner = name
}

Masalah saya adalah onclick ketika saya mencoba menetapkannya dijalankan dan tidak menambahkan onclick. Saya tahu ini karena ketika saya membuat tombol baru, pemenang variabel selalu merupakan tombol terbaru yang dibuat. Juga ketika saya memeriksa elemen di google chrome, satu-satunya hal yang ditetapkan adalah ID dan Kelas.

0
Eric Hamm 16 Agustus 2017, 18:32

2 jawaban

Jawaban Terbaik

newbutton.onclick = whoWon(this.id) sebenarnya akan memanggil fungsi whoWon.

Anda harus meneruskan whoWon apa adanya, tanpa memanggilnya dan mengikatnya this.id. Ini harus melakukan trik:

newbutton.onclick = whoWon.bind(null, this.id)

Atau seperti yang disebutkan oleh @styfle di komentar, Anda dapat membuat fungsi anonim:

newbutton.onclick = () => whoWon(this.id)
2
Erazihel 16 Agustus 2017, 15:39

Kode Anda newbutton.onclick = whoWon(this.id) mengeksekusi whoWom(this.id) dan memberikan hasilnya (yaitu undefined dalam kasus ini) ke newbutton.onclick.

Apa yang benar-benar harus Anda gunakan adalah:

newbutton.addEventListener('click', whoWon);

Dari sana Anda dapat mengakses yang setara dengan this.id dengan event.target.id

1
tomcek112 16 Agustus 2017, 15:37