2

ボタンのクリックまたはその他のイベントでJavaScriptの関数の実行を停止することは可能ですか? 以下は私のジレンマです

function drop() {

    setTimeout(function () {    //  call a 250ms setTimeout when the loop is called
       setMarkers(map, locationArray, locationNameArray, iterator);
       iterator++;
       if (iterator < locationArray.length) {      //  if the counter < 10, loop!
         drop();             
       }
     }, 250);
}

この関数は、Google マップのピンを 250 ミリ秒間隔でキャンバスにドロップします。ユーザーが前の画面 (地図ページから離れた場所) に移動したい場合、戻るボタンをクリックすると、この drop() 関数の実行を停止し、カウンター (反復子) をリセットして戻ります。

どうすればこれを行うことができるか、それが可能かどうか考えていますか? ありがとう!

4

1 に答える 1

7

これを行う最も簡単な方法は、そこに「グローバルに」スコープされた変数をスローし、反復ごとにそれをチェックすることです。

var cancel = false;
function drop() {
    setTimeout(function () {    //  call a 250ms setTimeout when the loop is called
       setMarkers(map, locationArray, locationNameArray, iterator);
       iterator++;
       if (iterator < locationArray.length && cancel === false) {      //  if the counter < 10, loop!
         drop();             
       }
     }, 250);
}

次に、イベントハンドラーで同じ変数を更新します。

$("#mybutton").click(function() {
    cancel = true;
});
于 2012-06-19T05:49:41.410 に答える