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

时间:2012-12-02 23:37:10

标签: javascript addeventlistener

我必须在这里错过一些非常简单的东西,但我不能为我的生活弄清楚。为什么下面的页面在页面加载时执行alert,而不是按预期按钮点击?我试图将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>

2 个答案:

答案 0 :(得分:1)

在调用addEventListener时尝试'click'而不是'onclick'。

答案 1 :(得分:1)

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

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