Показать сообщение отдельно
  #1 (permalink)  
Старый 31.05.2017, 02:04
Новичок на форуме
Отправить личное сообщение для Davias Посмотреть профиль Найти все сообщения от Davias
 
Регистрация: 30.05.2017
Сообщений: 6

Таймер обратного отсчета.
Ребят, нужна помощь. С js только начал знакомиться, поэтому возникают проблемы. Есть скрипт таймера и он вроде бы даже работает, но не так как хотелось бы Есть переменная date_to это то, до чего будет тикать таймер и переменная date - текущая дата. И он тикает обновляясь каждую секунду с помощью setTimeot() пока эти две даты не встретятся. Проблема вот в чём... Хотелось бы сделать так, чтобы не приходилось каждый раз в коде менять дату до которой он будет тикать, а чтобы при вызове функции таймер автоматический начинал с 01:00:00. Пробовал не указывать дату для переменной date_to(то есть оставлять там текущую) и писал date_to.setHours(1);, результат: при вызове функции таймер отображает 01:00:00 и стоит на этой цифре, то есть нет обратного отсчета. Интересно, что если изначально в переменной date_to стоит дата хоть на 1 сек больше, чем в date и прописано date_to.setHours(1), то оно показывает 01:00:01, 01:00:00, 00:59:59 и так далее, то есть отсчет идёт нормально, а если в date_to стоит текущая дата и я прибавляю час, то высвечивает 01:00:00 и замирает... Есть какие нибудь мысли? Код:
$(document).ready(function(){
function timer(){
var date = new Date();
var date_to = new Date();
date_to.setHours(3);

var time = date_to - date;

var hour = parseInt(time/(60*60*1000));
if(hour < 10){
	hour = "0" + hour;
}

var min = parseInt(time/(60*1000))%60;
if(min < 10){
	min = "0" + min;
}

var sec = parseInt(time/(1000))%60;
if(sec < 10){
	sec = "0" + sec;
}

var tiktak = hour + ":" + min + ":" + sec;

if(date_to > date){
	$("#clock").html("<span>" + tiktak + "</span>");
	setTimeout(timer,1000);
}
else{
	$("#clock").html("<font color=green>Готово!</font>")
};

};

$(function(){
	$("#stimer").click(function(){
		timer();
	});
});

});
Ответить с цитированием