2015-09-07 4 views
1

Я делаю часы Pomodoro. Я взял объект clock, добавлено start, pause, resume функции. Чтобы повторно запустить такт в функции start, я добавил две переменные s и b, чтобы сохранить исходное время сеанса и разбить. Таким образом, в функции pause, когда я удаляю таймер, исходное время сеанса и прерывания удаляется. так resume функция часы смотрит с самого начала. Теперь, как написать функцию pause в правильном направлении, чтобы сделать resume?Pomodoro clock: кнопка возобновления не работает

Это ссылка 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

Я думаю, что вы не проверял. время сеанса не повторяется. время прерывания повторяется снова и снова! –

Смежные вопросы