2012-05-24 55 views
1

我只是複製粘貼此位從一本書:混淆的window.onload

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

的問題是,該警報出現時,我加載頁面,當我點擊該按鈕沒有。有人爲什麼?

謝謝!

回答

5

變化

button.onclick = handleButtonClick(); 

button.onclick = handleButtonClick; 

(不()。)

你原線,button.onclick = handleButtonClick();電話handleButtonClick功能,然後指定其返回值button.onclick。它酷似

var a = foo(); 

...這電話foo,然後分配給它的返回值來a

你不想這樣做,你只是想分配函數參考onclick。所以你可以通過它的名字來引用這個函數,而不用調用它(所以,沒有())。