2015-09-07 64 views
1

我正在製作番茄鍾。我拿了一個clock的對象,加了start,pause,resume的功能。爲了在start函數中重複運行時鐘,我添加了兩個變量sb以保持會話和中斷的原始時間。因此,在我刪除計時器的pause函數中,會話和休息的原始時間正在被刪除。所以 resume功能時鐘從一開始就凝視着。現在,如何編寫pause函數以正確的方式使resume番茄鍾:恢復按鈕不起作用

這是JSfiddle鏈接。 http://jsfiddle.net/sajibBD/f18nh323/3/

在此先感謝!

var Clock = { 
sessionSeconds: 0, 
breakSeconds: 0, 

start: function() { 
    var self = this; 
    var s = this.sessionSeconds + 1; 
    var b = this.breakSeconds + 1; 

    this.interval = setInterval(function() { 
     if (s > 0) { 
      s -= 1; 
      $('#state').text('Session'); 
      $("#min").text(Math.floor(s/60 % 60)); 
      $("#sec").text(parseInt(s % 60)); 
     } else if (b > 0) { 
      b -= 1; 
      $('#state').text('Break'); 
      $("#min").text(Math.floor(b/60 % 60)); 
      $("#sec").text(parseInt(b % 60)); 
     } else if (b === 0) { 
      s = self.sessionSeconds + 1; 
      b = self.breakSeconds + 1; 
     } 

     var min = $("#min").text(); 
     var sec = $("#sec").text(); 

     if (min.length === 1) { 
      $("#min").text('0' + min); 
     } 
     if (sec.length === 1) { 
      $("#sec").text('0' + sec); 
     } 

    }, 1000) 
}, 

pause: function() { 
    clearInterval(this.interval); 
    delete this.interval; 
}, 

resume: function() { 
    if (!this.interval) this.start(); 
}, 
} 

回答

0

試試這個:

http://jsfiddle.net/f18nh323/5/

var Clock = { 
sessionSeconds: 0, 
breakSeconds: 0, 

start: function() { 
    var self = this; 
    var s = this.sessionSeconds + 1; 

    var b = this.breakSeconds + 1; 

    this.interval = setInterval(function() { 

     if (s > 0) { 
      s -= 1; 
      $('#state').text('Session'); 
      $("#min").text(Math.floor(s/60 % 60)); 
      $("#sec").text(parseInt(s % 60)); 
     } else if (b > 0) { 
      b -= 1; 
      $('#state').text('Break'); 
      $("#min").text(Math.floor(b/60 % 60)); 
      $("#sec").text(parseInt(b % 60)); 
     } else if (b === 0) { 
      s = self.sessionSeconds + 1; 
      b = self.breakSeconds + 1; 
     } 


     self.sessionSeconds = s; 
     var min = $("#min").text(); 
     var sec = $("#sec").text(); 



     if (min.length === 1) { 
      $("#min").text('0' + min); 
     } 
     if (sec.length === 1) { 
      $("#sec").text('0' + sec); 
     } 


    }, 1000) 
}, 

pause: function() { 
    clearInterval(this.interval); 
    delete this.interval; 
}, 

resume: function() { 
    if (!this.interval) this.start(); 
}, 

}

+0

我覺得你沒有檢查。會話時間不重複。休息時間正在重複一遍又一遍! –