Penulisan semula tajuk: Fungsi ini dipanggil oleh addEventListener tanpa permintaan eksplisit saya
P粉477369269
P粉477369269 2023-10-18 23:57:48
0
2
555

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粉477369269
P粉477369269

membalas semua(2)
P粉258083432

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粉773659687

Memetik jawapan Ian :

function message_me(m_text){
    alert(m_text)
} 

second.addEventListener('click', 
    function() {
        message_me('shazam');
    }
);

Ini adalah fiddle yang dikemas kini.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!