Показать сообщение отдельно
  #8 (permalink)  
Старый 28.07.2015, 03:29
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<span id="my_timer" style="color: #f00; font-size: 100%; font-weight: bold;">02:00:00</span>
<input type="button" value="Запустить таймер" onClick=startTimer("my_timer",1) >
<input type="button" value="Stop" onClick=startTimer("my_timer",2) >
<input type="button" value="Reset" onClick=startTimer("my_timer",3) >

<script type="text/javascript">
(function() {

function getElem_Time(outElem) {
     var arr = outElem.innerHTML.split(':')
     return 1000*(3600*(+arr[0])+60*(+arr[1])+(+arr[2]));
}

function two_dig (t) {
     return  (parseInt(t)/100).toFixed(2).toString().split('.')[1];
}

function getHH_MM_SS(sek) {
     return two_dig (sek/3600)+  ':' + two_dig ((sek/60)%60)+ ':' + two_dig (sek%60);
}

var timerId;		// ID setInterval
var firstSaveVal;	// Тут сохраняем начальное значение Time из элемента;
var  endDate	 = 	localStorage.endDate;


startTimer = function(sel,test){	//test == 1 при запуске по кнопке и == 0 при автозапуске на новой странице, 3 - сброс;

  var outElem = document.getElementById(sel); //объект вывода/ввода цифр 
  clearInterval(timerId);

  if(!firstSaveVal)firstSaveVal = outElem.innerHTML;

  if(test == 2) {delete localStorage.endDate; return}

  if(test == 3) {outElem.innerHTML = firstSaveVal; delete localStorage.endDate; return}

  if(!endDate &&!test) return false; //Aвтозапуск на новой странице;

  var deltaT = getElem_Time(outElem);

  if(test){
     outElem.innerHTML = firstSaveVal;
     deltaT = getElem_Time(outElem);
     delete localStorage.endDate;
     endDate = localStorage.endDate;
  }

  var thisTime = +new Date();

  if(!endDate){
    var timeEnd = thisTime + deltaT;
    localStorage.endDate = sel+','+ timeEnd;
  }

  if(endDate &&!test){
     var arr = endDate.split(',');
     var outElem = document.getElementById(arr[0]);
     var timeEnd = +arr[1];
  }


  function setOutTime(){
    if(+new Date()>=timeEnd){
       clearInterval(timerId);
       outElem.innerHTML='00:00:00';
       delete localStorage.endDate;
       return;
    }
    var timeToFinish = parseInt((timeEnd - +new Date())/1000);
    outElem.innerHTML = getHH_MM_SS(timeToFinish);
 }  setOutTime();
  

  timerId = setInterval(setOutTime,1000);


}

  startTimer("my_timer",0); //Aвтозапуск на новой странице с проверкой сохранненого в Storage(если нет - return);
  window.onfocus =   function (){startTimer("my_timer",0); } //При возврате на вкладку, бывшую неактивной
  
}());
</script>


Для перезапуска (якобы на новой странице) после запуска по кнопке "Запустить таймер", перезапустить по "Посмотреть" , не нажимая кнопки "Запустить таймер" (или иных)

Последний раз редактировалось Deff, 28.07.2015 в 08:01.
Ответить с цитированием