2011-07-11 6 views
0

インターバル機能が複雑になって、カウンタが2でカウントダウンし、次に3カウント、4カウントが1でカウントされる問題があります。ここでこの関数でClearIntervalに見えませんか? 2分、3分、4分だけカウントダウンします。

が私のコードです:

s = 0; 
function deconInterval(passedObj, startTime) { 


if(!seconds) { 
    seconds = (startTime*60 - 1); 
    s = seconds; 
} 

minVar = Math.floor(s/60); 
secVar = s % 60; 

if(secVar < 10) { 
    zeros = '0'; 
} else { 
    zeros = ''; 
} 

s--; 
    passedObj.html(minVar +':'+zeros+ '' +secVar); 
} 

$('button').click(function() { 


    if($(this).html() == 'Reload') { 
     alert('Resetting Cards'); 
     window.location.reload() 
    } 

    $(this).html('Reload'); 


    intval = setInterval(displayTime, 60000); 
    $(function(){ 
     $('li.item').map(function(){ 
      var _this = $(this); 
      setTimeout(function(){ 
       $('.timeleft').remove();    
       $('li.item').removeClass('highlighted'); 
       _this.addClass('highlighted'); 

     timeval = _this.next().attr('data-time') - (_this.attr('data-time')) 

     _this.prepend('<div class="timeleft">'+(timeval)+':00</div>'); 

     seconds = ""; //reset seconds 
     timetabInterval = setInterval(function() { deconInterval(_this.children('.timeleft'), timeval); }, 1000); 


      },(Number(_this.attr('data-time'))*60000)); 
     }); 
    }); 
}); 

答えて

0

clearIntervalはあなたの質問に対する答えです。

クリックハンドラーを設定していれば、domは準備ができているので、クリックハンドラー内でを実行する必要はありません。

+0

ありがとう、はい私はそれがclearIntervalだったことは分かっていましたが、$(function(){})を実行していないと良いアドバイスです – TaylorMac

0

私はあなたがintval, timeval and timetabIntervalのためのグローバル変数を使用してはならないと思うそうでなければ、同じ変数と混乱のすべてまでにより多くのイベントを取り付ける終わる(あなたのケースでは、私はあなたが添付考えますsetIntervalからtimetabIntervalまでの数が多いため、2,3または4でアップカウントされます)