私の問題は、タイマーを停止できないことです。再帰関数でsettimeoutを停止する
私はこのフォーラムからタイムアウトを設定するのにthis methodでした。 識別子をグローバル変数に格納することになっていました。 偶然、「mydiv」を隠してからまだ実行中であることがわかりました。
再帰関数が複数のインスタンスを作成する場合、またはタイムアウトのインスタンスを1つだけ作成する場合は、これも知っておく必要があります。最初はいつも "var mytimer"を上書きすると思っていたからです。 今私は確信していません。
タイマーを止めるにはどんな方法がありますか?
var updatetimer= function() {
//do stuff
setTimeout(function(){updatetimer();}, 10000);
}//end function
//this should start and stop the timer
$("#mybutton").click(function(e) {
e.preventDefault();
if($('#mydiv').is(':visible')){
$('#mydiv').fadeOut('normal');
clearTimeout(updatetimer);
}else{
$('#mydiv').fadeIn('normal');
updatetimer();
}
});
おかげで、リチャード
私はそれはかなり悪かったと言うだろう - それは機能的ですが、それをキャンセルする方法はありません(setTimeoutの値は取得されないため)、それは毎秒要求を行うのに比べて簡単に固定され、簡単です。それは本当に過剰です、imho。 – annakata
ありがとう、今私は自分のコードをもう理解していない。とにかくそれらの匿名関数を使用する利点は何ですか?答えは広範囲にあるので、他の質問全体である –
のリンクを参照してください:) – annakata