2

ボタンがクリックされたときにのみalertMe関数が呼び出されるようにしたいのですが、ページが読み込まれるとすぐに呼び出されます(setIntervalが呼び出されて呼び出されます)。しかし、pageLoad関数を削除すると、startButtonがnullになり、何もできなくなります。よろしくお願いします。

/when user clicks start, start the animation
window.onload = pageLoad;

function pageLoad() {
    var startButton = document.getElementById("start");

    startButton.onclick = setInterval(alertMe,200);
}

function alertMe() {
  alert("hi");
}
4

2 に答える 2

11
function pageLoad() {
    var startButton = document.getElementById("start");

    startButton.onclick = alertMe;
}

function alertMe() {
  setInterval(function(){
    alert("hi");
  },200);
}

関数内で区間を移動alertMeし、それを参照として渡しますstartButton.onclick

デモ:http://jsfiddle.net/gHS4a/

于 2013-03-25T01:57:28.907 に答える
3

基本的にあなたはこのようにする必要があります:

startButton.onclick = function() {
    interval = setInterval(alertMe, 200);
}

alertMe関数への参照を送信します

別の方法は次のようになります。

startButton.onclick = function() {
    interval = setInterval(function(){
        alertMe();
    }, 200);
}

関数を呼び出す無名関数への参照を送信しalertMeます

于 2013-03-25T01:58:10.973 に答える