所以我們有一個頁面:的addEventListener調用函數沒有我,甚至要求它
<span id='container'>
<a href='#' id='first'>First Link</a>
<a href='#' id='second'>Second Link</a>
</span>
而且要添加一些單擊事件:
first.addEventListener('click', function(){alert('sup!');})
就像一個魅力!但是,當您使第二個參數爲外部函數時:
function message_me(m_text){
alert(m_text)
}
second.addEventListener('click', message_me('shazam'))
它立即調用該函數。我怎樣才能阻止呢?很煩人!
這裏有一個現場演示:http://jsfiddle.net/ey7pB/1/
由於第二個參數需要一個函數**引用**,您需要提供一個。用你有問題的代碼,你馬上調用函數並傳遞它的結果(這是* undefined *)。要麼在一個匿名函數中調用函數(比如你的第一個例子),或者改變函數來**返回**一個函數(可能不是理想的)。 – Ian 2013-04-30 23:17:59
這爲什麼不理想?這似乎反對D.R.Y.複製我的功能在4左右addEventListeners即時設置,不? – LittleBobbyTables 2013-04-30 23:20:17
另一種選擇是將所需消息作爲屬性存儲在元素上,然後將該函數綁定爲second.addEventListener('click',message_me)',並使其從屬性而不是從參數中檢索消息。 – nnnnnn 2013-04-30 23:23:22