Показать сообщение отдельно
  #5 (permalink)  
Старый 02.08.2014, 13:34
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Хммм… Не знаю в чем ошибка, но зря ты используешь вот такое:
days = Math.floor( diff / (1000*60*60*24) ),

В js есть объект Date, у которого есть методы, отдающие часы, минуты и т.д.

Вот это — незаметная ошибка:
diff -= 1000;

setInterval вызывается не раз в секунду, а как попало. Ну, точнее, как повезет. Рано или поздно, твой счетчик начнет отставать. now и diff нужно получать при каждом вызове, это не смертельно.


Попробуй вот этот код, у меня он работает правильно:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<div id="countdown_time"></div>
	<script>
		var targetDate = getDate();
		setInterval(updateTime, 1000);

		function updateTime() {
			var diff = new Date(targetDate - new Date());

			var hours = diff.getUTCHours();
			var mins = diff.getUTCMinutes();
			var secs = diff.getUTCSeconds();
			var displaytime = pad(hours) + ':' +  pad(mins) + ':' + pad(secs);

			document.getElementById("countdown_time").innerHTML = displaytime;
		}

		function getDate() {
			var date = new Date();
			date.setDate(date.getDate() + 1);
			return date;
		}

		function pad(num) {
			return num > 9 ? num : '0' + num;
		}
	</script>
</body>
</html>
Ответить с цитированием