Saya menghadapi masalah seperti itu semasa menulis JS hari ini:
function init() {
var btn = document.getElementById('sort-btn');
btn.onclick = btnHandle();
}
Di atas adalah bahagian kod JS saya Perhatikan di sini, ayat kedua dalam fungsi init, btn.onclick = btnHandle(); selepas memuat semula halaman, btnHandle Fungsi dilaksanakan secara langsung.
Kemudian saya menukar kod kepada ini
function init() {
var btn = document.getElementById('sort-btn');
btn.onclick = btnHandle;
}
Selepas mengalih keluar () dalam pernyataan btn.onclick = btnHandle(); Kenapa ni? btnHandle dan btnHandle()
btn.onclick
menerima fungsi, yang bermaksud melaksanakan fungsi ini apabila btn diklik danbtnHandle()
anda bermaksud melaksanakan fungsi ini, memberikanbtn .onclick ialah nilai pulangannya, dan sudah tentu ia dilaksanakan terlebih dahulu.
btn.onclick
接受一个函数,代表当 btn 被点击的时候执行这个函数,而你的btnHandle()
代表了执行这个函数,给btn.onclick
的是他的返回值,当然就先执行了。下面的写法就代表着,当
Tulisan berikut bermakna apabilabtn.onclick
时,执行btnHandle
btn.onclick
dilaksanakan, fungsibtnHandle
dilaksanakan. 🎜btn.onclick = btnHandle(); Kod ini bermaksud untuk menetapkan hasil pelaksanaan kepada acara klik
Ini bermakna apabila anda memuat semula halaman, fungsi init akan dilaksanakan Selepas fungsi init dilaksanakan, apabila onclick diikat, baris kod btn.onclick = btnHandle();
adalah bersamaan dengan melaksanakan kaedah btnHandle dan. memberikan nilai pulangan kaedah kepada btn.
Dan btn.onclick = btnHandle;
bersamaan dengan btn.onclick = function(){xxxxx};
Maksudnya, rujukan pembolehubah btnHandle diberikan kepada btn.onclick
Jadi apabila peristiwa klik dicetuskan, wakil btnHandle akan dilaksanakan kaedah Fungsi