我有一个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')
答案 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>