【发布时间】:2021-12-21 17:22:45
【问题描述】:
所以我们有一个页面:
<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/
【问题讨论】:
-
因为第二个参数需要一个函数reference,所以你需要提供一个。使用有问题的代码,您会立即调用该函数并传递其结果(即 undefined)。在匿名函数中调用该函数(如您的第一个示例)或将函数更改为 return 一个函数(可能不理想)。
-
为什么这不理想?似乎反对 D.R.Y.在我设置的 4 个左右 addEventListeners 中复制我的函数,不是吗?
-
另一种选择是将所需消息作为属性存储在元素上,然后将函数绑定为
second.addEventListener('click', message_me)并让它从属性而不是参数中检索消息。
标签: javascript addeventlistener