Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2017, 09:26
Новичок на форуме
Отправить личное сообщение для killDucksForMoney Посмотреть профиль Найти все сообщения от killDucksForMoney
 
Регистрация: 11.03.2017
Сообщений: 4

pomodoro clock
Всем привет.

Пишу Pomodoro clock, это проектная работа для freecodecamp.

Вот рабочий пример.

Есть такой код:
window.onload = function(){
  var params = {
    session:25,
    break: 5
  };
  var time = new Timer(params);
  time.start();
}
function Timer(params){
  this.session = params.session||25;
  this.break = params.session||5;
}
Timer.prototype.start = function(){
  var self = this;
  var sec = 60;
  var timerId = setTimeout(tick, 1000);   
  var timing = setTimeout()
  function tick(){
    sec--;
    console.log(self.session+":"+sec);
    if(self.session==0&&sec==0)console.log("change time");//вот тут надо чтобы self.session=this.break а потом обратно когда выйдет его время.
    if(sec==0){      
      self.session--;          
      sec=60;
    }    
    timerId = setTimeout(tick, 1000);
  }   
}


Не могу придумать как переключать время с 25 минут на 5 минут без повтора кода. Посоветуйте что нибудь пожалуйста.

Последний раз редактировалось killDucksForMoney, 12.03.2017 в 09:38.
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2017, 11:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

таймер-помидорка
killDucksForMoney,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.onload = function(){
  var params = {
    session:2,
    Break: 1
  };
  var time = new Timer(params);
  time.start();
}
function Timer(params){
  this.session = params.session||25;
  this.Break = params.Break||5;
  this.name = "session";
  this.time = (params.session||25)*60*1000;
  this.timerId = null;
}
Timer.prototype.stop = function(){window.clearTimeout(this.timerId) }
Timer.prototype.start = function(){
  var self = this;
  self.stop();
  var from = (new Date).getTime();
  var to = from + self.time
  function tick(){
    self.time = to - (new Date).getTime(); document.querySelector("#show").innerHTML = formatTime(self.time) + " " + self.name
    if(self.time <= 0){
     self.name = self.name == "session" ? "Break" : "session";
     self.time = self[self.name]*60*1000;
     self.start()
    }
    else self.timerId = setTimeout(tick, 1000);
  }
  tick()
function two(a) {
    return (9 < a ? "" : "0") + a
}
function formatTime(a) {
    a = Math.floor(a / 1E3);
    var c = Math.floor(a / 60),
        d = Math.floor(c / 60);
    a %= 60;
    c %= 60;
    return two(d) + " : " + two(c) + " : " + two(a)
}
}
  </script>
</head>

<body>
<div id="show"></div>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 12.03.2017, 20:08
Новичок на форуме
Отправить личное сообщение для killDucksForMoney Посмотреть профиль Найти все сообщения от killDucksForMoney
 
Регистрация: 11.03.2017
Сообщений: 4

Спасибо рони!

Ты все сделал за меня) Все работает!

Последний раз редактировалось killDucksForMoney, 12.03.2017 в 20:19.
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2017, 20:17
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

killDucksForMoney, "break" c маленькой буквы у тебя.
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2017, 20:22
Новичок на форуме
Отправить личное сообщение для killDucksForMoney Посмотреть профиль Найти все сообщения от killDucksForMoney
 
Регистрация: 11.03.2017
Сообщений: 4

Rise, я вот только только понял это. И поспешил удалить сообщение, как увидел твое. Спасибо теперь понял)
Ответить с цитированием
  #6 (permalink)  
Старый 12.03.2017, 20:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

killDucksForMoney,
зарезервированные слова лучше не использовать
Ответить с цитированием
  #7 (permalink)  
Старый 12.03.2017, 20:25
Новичок на форуме
Отправить личное сообщение для killDucksForMoney Посмотреть профиль Найти все сообщения от killDucksForMoney
 
Регистрация: 11.03.2017
Сообщений: 4

рони,
я и забыл что "break" зарезервировано, пока не увидел на форуме что он подсвечивается иначе.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация времени, переработка l-liava-l Оффтопик 23 03.10.2014 15:58
Подключение счетчика Flip Clock Skippi Элементы интерфейса 1 14.02.2014 16:19
Scroll Clock Kolyaj Оффтопик 1 20.11.2009 13:04