所以我們有一個頁面:
<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粉2580834322023-10-19 17:48:17
由於第二個參數需要一個函數引用,因此您需要提供一個。對於有問題的程式碼,您將立即呼叫該函數並傳遞其結果(這是未定義
...因為函數所做的只是警報
並且不返回任何內容)。要么在匿名函數中調用該函數(如您的第一個示例),要么更改該函數以返回函數。
你可以這樣做:
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粉7736596872023-10-19 12:06:48
引用伊恩的答案:
function message_me(m_text){ alert(m_text) } second.addEventListener('click', function() { message_me('shazam'); } );
這是更新的fiddle。