与window.onload混淆

Rog*_*nte 1 javascript javascript-events

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

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

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

谢谢!

T.J*_*der 5

更改

button.onclick = handleButtonClick();
Run Code Online (Sandbox Code Playgroud)

button.onclick = handleButtonClick;
Run Code Online (Sandbox Code Playgroud)

(没有().)

您的原始行button.onclick = handleButtonClick(); 调用handleButtonClick函数,然后将其返回值赋值给button.onclick.它就像

var a = foo();
Run Code Online (Sandbox Code Playgroud)

... 调用 foo然后将其返回值赋值给a.

你不想这样做,你只是想分配的功能引用onclick.因此,您可以通过其名称来引用该函数,而无需调用它(因此,没有它()).