Jadi kami mempunyai halaman:
<span id='container'> <a href='#' id='first'>First Link</a> <a href='#' id='second'>Second Link</a> </span>
Dan ingin menambah beberapa acara klik:
first.addEventLis tener('click', function(){alert('sup!');})
Berfungsi seperti daya tarikan! Tetapi apabila anda menetapkan hujah kedua kepada fungsi luaran:
function message_me(m_text){ alert(m_text) } second.addEventLis tener('click', message_me('shazam'))
Ia memanggil fungsi dengan segera. Bagaimana saya boleh menghentikan ini? Sangat menjengkelkan!
Ini ialah demo langsung: http://jsfiddle.net/ey7pB/1/
Memandangkan hujah kedua memerlukan fungsi rujukan , anda perlu menyediakannya. Dengan kod yang dipersoalkan, anda akan segera memanggil fungsi dan lulus hasilnya (iaitu
未定义
...kerana semua fungsi yang dilakukan ialahberitahu
dan tidak mengembalikan apa-apa). Sama ada panggil fungsi dalam fungsi tanpa nama (seperti contoh pertama anda) atau tukar fungsi untuk mengembalikan fungsi.Anda boleh melakukan ini:
Atau ini:
Demo: http://jsfiddle.net/tcCvw/ p>
Memetik jawapan Ian :
Ini adalah fiddle yang dikemas kini.