与window.onload混淆

时间:2012-05-24 16:04:38

标签: javascript javascript-events

我只是从一本书中复制粘贴这一点:

window.onload = init;
function init() {
var button = document.getElementById("addButton");
button.onclick = handleButtonClick();
}
function handleButtonClick() {
alert("Button has been clicked");
}

问题是当我加载页面时出现警报,而不是当我点击按钮时。有人为什么?

谢谢!

1 个答案:

答案 0 :(得分:5)

更改

button.onclick = handleButtonClick();

button.onclick = handleButtonClick;

(没有()。)

您的原始行button.onclick = handleButtonClick(); 调用 handleButtonClick函数,然后将其返回值分配给button.onclick。这和

完全一样
var a = foo();

... 调用 foo,然后将其返回值分配给a

您不想这样做,您只想将函数 reference 分配给onclick。因此,您可以通过其名称来引用该函数,而无需调用它(因此,没有())。