所以我们有一个页面:的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