Rumah > Soal Jawab > teks badan
Saya mencubanya tetapi nampaknya ia tidak boleh dihantar? ? ?
習慣沉默2017-05-18 10:52:06
Mengapa ramai yang tidak menyukainya? Saya fikir ia adalah masalah yang baik
<button>click</button>
<script>
document.querySelector("button").addEventListener("click", fn('hello world'), false);
function fn(a) {
return function() {
alert(a);
}
}
</script>
黄舟2017-05-18 10:52:06
Saya tidak tahu apa yang anda mahu hantar.
Tetapi anda boleh mentakrifkan fn sebagai fungsi yang mengembalikan fungsi. Pada asasnya memenuhi keperluan...
给我你的怀抱2017-05-18 10:52:06
btn.addEventListener('click',function(){fn('params')});
function fn(data) {
alert(data)
}
Cuba ini?
巴扎黑2017-05-18 10:52:06
document.getElementById('aaa').addEventListener('click', fn('asdadad'), false);
function fn(data) {
console.info(data);
}
巴扎黑2017-05-18 10:52:06
function foo(a, b, c) {}
// 不要这样做
setTimeout('foo(1,2, 3)', 1000)
// 可以使用匿名函数完成相同功能
setTimeout(function() {
foo(1, 2, 3);
}, 1000)
巴扎黑2017-05-18 10:52:06
Saya tidak menjumpai prototaip fungsi addEventListener Dalam penggunaan harian, saya rasa memang begitu. Selepas
addEventListener menangkap peristiwa pencetus, tambah () pada nama fungsi panggilan untuk memanggil .
Kemudian
Selepasbtn.addEventListener('klik',fn,false);
acara mendengar addEventListener menangkap acara klik, fungsi yang dilaksanakan ialah fn()
addEventListener mempunyai kelemahan iaitu ia tidak boleh menambah kurungan dengan parameter, iaitu, ia tidak boleh menangkap klik dan kemudian melaksanakan fn(1,2) .
Jadi biasanya, saya menggunakan fungsi fungsi tanpa nama(){fn(1,2)} sebagai fungsi mengikat. Kemudian kodnya menjadi seperti ini:
btn.addEventListener('klik',function(){fn(1,2)},false)
Selepas menangkap acara klik, fungsi yang dicetuskan ialah
function(){fn(1,2)}()
Anda boleh mencetuskan fungsi berparameter seperti fn(1,2).
Saya tidak begitu biasa dengan fungsi addEventListener, dialu-alukan untuk berbincang dan membetulkan saya.