Javascript 事件侦听器函数在赋值时执行?

Javascript 事件侦听器函数在赋值时执行?,javascript,addeventlistener,Javascript,Addeventlistener,我一定错过了一些非常简单的东西,但我一辈子都想不出来。为什么下面的页面在页面加载时执行警报,而不是按预期点击按钮?我正试图将clicky()函数分配给事件侦听器(此分配发生在页面加载时),但实际的警报发生在页面加载时(即调用clicky函数),并且按钮从未获得其侦听器。我错过了什么 <html> <head> <script> function clicky() { alert("clicky"); } function start() {

我一定错过了一些非常简单的东西,但我一辈子都想不出来。为什么下面的页面在页面加载时执行
警报
,而不是按预期点击按钮?我正试图将
clicky()
函数分配给事件侦听器(此分配发生在页面加载时),但实际的警报发生在页面加载时(即调用clicky函数),并且按钮从未获得其侦听器。我错过了什么

<html>
<head>
<script>

function clicky() {
    alert("clicky");
}

function start() {
    var myButton = document.getElementById("theButton");
    myButton.addEventListener("onclick", clicky(), false);
}

window.onload = start;

</script>
</head>

<body>
<input type="button" id="theButton" value="I'm a button!">
</body>

</html>

函数clicky(){
警报(“咔嗒声”);
}
函数start(){
var myButton=document.getElementById(“theButton”);
myButton.addEventListener(“onclick”,clicky(),false);
}
window.onload=开始;

在调用addEventListener时,尝试使用“单击”而不是“onclick”。

您添加的是clicky()作为侦听器返回的内容,而不是clicky本身。clicky()不返回任何内容(未定义),这就是没有附加处理程序的原因。去掉括号就行了


//编辑:哦,我可以看出这只是问题的一半。

当你给函数添加括号时,它会立即执行,去掉括号->
myButton.addEventListener(“onclick”,clicky,false)@adeneo您是正确的,这会阻止它在页面加载时执行。但它仍然不能作为事件侦听器正确连接,所以肯定还有一个问题。我已经解决了。正确的事件是
click
,而不是
onclick
。是的,在事件侦听器中不使用“on”前缀,它在