1

本からこのビットをコピーして貼り付けただけです:

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

問題は、ボタンをクリックしたときではなく、ページをロードしたときにアラートが表示されることです。誰か理由はありますか?

ありがとう!

4

1 に答える 1

5

変化する

button.onclick = handleButtonClick();

button.onclick = handleButtonClick;

(なし()。)

元の行は関数をbutton.onclick = handleButtonClick(); 呼び出しhandleButtonClickその戻り値を に代入しますbutton.onclick。まさにそっくり

var a = foo();

... を呼び出し fooて、その戻り値を に代入しますa

関数参照をに割り当てたいだけですonclick。したがって、関数を呼び出すことなく、その名前で関数を参照します (つまり、 なしで())。

于 2012-05-24T16:05:29.247 に答える