1

私はここで信じられないほど単純な何かを見逃しているに違いありませんが、私は一生それを理解することはできません。alert以下のページが、意図したとおりにボタンのクリックではなく、ページの読み込みを実行するのはなぜですか?関数をイベントリスナーに割り当てようとしてい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>
4

2 に答える 2

1

addEventListener への呼び出しで、「onclick」ではなく「click」を試してください。

于 2012-12-02T23:45:04.730 に答える
1

clicky 自体ではなく、clicky() が返すものをリスナーとして追加しています。clicky() は何も返さない (未定義) ため、ハンドラーがアタッチされていません。括弧を取り除くだけです。

// 編集: ああ、それは問題の半分にすぎなかったことがわかります。

于 2012-12-02T23:48:32.107 に答える