0

私はこの機能を持っています:

var secondsRemaining = 45;

function countdown(secondsRemaining) {
var  seconds = secondsRemaining;
if (secondsRemaining > 0) {
 $('.timer > div').html(seconds);
 secondsRemaining--;
} else {
 if (secondsRemaining == 0) {
  // Times up ....
 }
 }
setInterval(function() {
countdown(secondsRemaining);
}, 1000); 
}

私はドキュメント準備機能で機能を実行しています:

 countdown(secondsRemaining);

また、回答をクリックした後、もう一度実行します。問題は、2 つのカウントダウン タイマーが同時に実行されていることです。新しいタイマーは 45 秒から開始し、古いタイマーは元の場所から継続します。

4

2 に答える 2

0

申し訳ありませんが、質問の言い方がよくわかりません。ドキュメントが読み込まれたときと、同じ要素に出力されている回答をクリックしたときの2つのタイムイベントを意図的に開始したいようです。

問題が2つの異なる要素に出力を持たせたい場合は、使用できる要素の引数を渡すことができます。

countdown($('.pick-me'), secondsRemaining);

同じ要素を使用する場合は、クリックするたびに間隔をクリアしてから、新しいイベントの間隔を設定し、更新を取得してManishearthsの応答を確認することができます。これについては、おそらくこれ以上詳しく説明しません。あなたが探している答え。

于 2013-02-15T13:50:04.503 に答える
0

使用するclearInterval()

最初に、最初の間隔 ID を保存しますsetInterval()

var secondsRemaining = 45;

function countdown(secondsRemaining) {
var  seconds = secondsRemaining;
if (secondsRemaining > 0) {
 $('.timer > div').html(seconds);
 secondsRemaining--;
} else {
 if (secondsRemaining == 0) {
  // Times up ....
 }
 }
myinterval=setInterval(function() { //myint now contains the interval id
countdown(secondsRemaining);
}, 1000); 
}

ここで、ユーザーがクリックすると、新しい間隔を設定する前に、次のコマンドで最初の間隔をキャンセルしclearInterval()ます。

button.onclick=function(){
  //do stuff
  clearInterval(myinterval)
  setInterval(function() {
    countdown(secondsRemaining);
   }, 1000); 
   // do stuff
}
于 2013-02-15T13:46:00.737 に答える