为什么我的点击'在pageload上调用addEventListener

时间:2016-11-05 17:40:34

标签: javascript jquery callback event-handling addeventlistener

我有一个id为#login的按钮和一行javascript文件:

document.getElementById('login').addEventListener('click', 'LoginPressed()')

作为测试,我做了这个功能:

function LoginPressed(){
  console.log('was login pressed already??')
}

每次加载页面时都会调用我的函数。如何阻止这种情况发生?

注意,我也尝试过不用引号的回调,而不是函数:

document.getElementById('login').addEventListener('click', LoginPressed())
document.getElementById('login').addEventListener('click', LoginPressed)
document.getElementById('login').addEventListener('click', 'LoginPressed')

1 个答案:

答案 0 :(得分:2)

因为你正在调用它,而不是引用它。

这:

 document.getElementById('login').addEventListener('click', 'LoginPressed()');

应该是这样的:

 document.getElementById('login').addEventListener('click', LoginPressed);

LoginPressed之后不应该有括号,因为你只想引用该函数,以便可以知道这是稍后调用的函数。在那里使用括号,您可以立即调用它。

LoginPressed周围也不应该有引号,因为这是函数的实际名称。使用引号,JavaScript运行时将无法正确识别该函数。

这是您的代码,正确编写并正常工作(请注意在您点击按钮之前控制台消息的显示方式):

document.getElementById('login').addEventListener('click', LoginPressed)

function LoginPressed(){
  console.log('was login pressed already??')
}
<button id="login">Click Me</button>