Rumah > Soal Jawab > teks badan
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/
P粉2580834322023-10-19 17:48:17
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 ialah beritahu
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:
function message_me(m_text){ alert(m_text); } second.addEventListener('click', function () { message_me('shazam') });
Atau ini:
function message_me(m_text){ return function () { alert(m_text); }; } second.addEventListener('click', message_me('shazam'));
Demo: http://jsfiddle.net/tcCvw/ p>
P粉7736596872023-10-19 12:06:48
Memetik jawapan Ian :
function message_me(m_text){ alert(m_text) } second.addEventListener('click', function() { message_me('shazam'); } );
Ini adalah fiddle yang dikemas kini.