標題重寫:在沒有我明確請求的情況下,函數被 addEventListe ner 呼叫
P粉477369269
P粉477369269 2023-10-18 23:57:48
0
2
556

所以我們有一個頁面:

<span id='container'>
    <a href='#' id='first'>First Link</a>
    <a href='#' id='second'>Second Link</a>
</span>

並想新增一些點擊事件:

first.addEventLis tener('click', function(){alert('sup!');})

就像魅力一樣!但是,當您將第二個參數設定為外部函數時:

function message_me(m_text){
    alert(m_text)
}

second.addEventLis tener('click', message_me('shazam'))

它立即呼叫該函數。我怎麼才能阻止這個?太煩人了!

這是一個現場示範:http://jsfiddle.net/ey7pB/1/

P粉477369269
P粉477369269

全部回覆(2)
P粉258083432

由於第二個參數需要一個函數引用,因此您需要提供一個。對於有問題的程式碼,您將立即呼叫該函數並傳遞其結果(這是未定義...因為函數所做的只是警報並且不返回任何內容)。要么在匿名函數中調用該函數(如您的第一個示例),要么更改該函數以返回函數。

你可以這樣做:

function message_me(m_text){
    alert(m_text);
}

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

或這個:

function message_me(m_text){
    return function () {
        alert(m_text);
    };
}

second.addEventListener('click', message_me('shazam'));

示範: http://jsfiddle.net/tcCvw/ p>#

P粉773659687

引用伊恩的答案

function message_me(m_text){
    alert(m_text)
} 

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

這是更新的fiddle

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!