Battle Forum

Battle Forum (http://battlefox.rooty.ru/index.php)
-   Web-программирование / Сайтостроение (http://battlefox.rooty.ru/forumdisplay.php?f=110)
-   -   Таймер (http://battlefox.rooty.ru/showthread.php?t=10146)

Elendil 16.12.2008 00:51

Таймер
 
Приближается глобальное событие - Новый Год. :D
Вот и задался вопросом о том, как считать время до этого события.
В сети нашел инфу в виде кода.
Код:

<HTML>
<BODY>

FGDF
<center><SCRIPT LANGUAGE="javascript">
today = new Date();
BigDay = new Date("January 1, 2009")
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
document.write( "До <b>Нового Года</b> осталось <b>"+daysLeft+"</b> дней(дня), <b>"+hrsLeft+"</b> часов и <b>"+minsLeft+"</b> минут.");

</SCRIPT>
</center>

Но есть один недочет, таймер не обновляется автоматический.
Кто может помочь в решении данного вопроса?

Есть конечно вариант обновления всей странички, но это немного не то.
Цитата:

Включить в заголовок между тегами <head></head> следующий код:
Код HTML:
Код:

<meta http-equiv=Refresh content='20;URL=http://www.site.ru/'>
где site.ru - адрес, куда будет перенаправлен посетитель (для автообновления просто указать адрес самой страницы, в код которой включена вышеприведенная строка), а 20 - время в секундах, после которого будет выполнено перенаправление.
Возможно обновление только таймера? :blink:

Смысл чтобы обновлялось не на f5, а само по себе как встроенные часы, если такое возможно.

MDM 16.12.2008 01:42

Вынеси расчеты в функцию (например, daysleft()), добавь в нее установку таймера:
Код HTML:

        setTimeout('daysleft()', 1000);
Затем вызови ее:
Код HTML:

        daysleft();
И напряги Google запросом "javascript setTimeout".

Elendil 18.12.2008 00:43

Вложений: 1
Гугл помог!
Для всех желающих разместить таймер ловите код, выглядит страшно, но все работает. ;)
Один из плюсов данного скрипта - согласование в дате.
Пример: 1 день, 14 дней, 2 дня. :)

Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<script type="text/javascript">
<!--
function newYearIn()
{
var days="<b> дней </b>"
var now = new Date();
var newYear = new Date("Jan,01,2009,00:00:00");
var totalRemains = (newYear.getTime()-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
if (
RemainsFullDays==2 ||
RemainsFullDays==3 ||
RemainsFullDays==4 ||
RemainsFullDays==22 ||
RemainsFullDays==23 ||
RemainsFullDays==24 ||
RemainsFullDays==32 ||
RemainsFullDays==33 ||
RemainsFullDays==34
) {
days="<b> дня </b>"
}
if (
RemainsFullDays==1 ||
RemainsFullDays==21 ||
RemainsFullDays==31
) {
days="<b> день </b>"
}
var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
var RemainsFullHours=(parseInt(secInLastDay/3600));
if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
var secInLastHour=secInLastDay-RemainsFullHours*3600;
var RemainsMinutes=(parseInt(secInLastHour/60));
if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
var lastSec=secInLastHour-RemainsMinutes*60;
if (lastSec<10){lastSec="0"+lastSec};
var mcend = Date.parse("Jan 1, 2009, 00:00:00");
var mcnow = now.getTime();
var mc = ((mcend-mcnow)/10).toFixed(0).substr(8);
document.getElementById('newyear').innerHTML = "<center>До <b>Нового Года</b> осталось: "+RemainsFullDays+days+RemainsFullHours+":"+RemainsMinutes+":"+lastSec+"</center>";
setTimeout("newYearIn()",10);
}
else {document.getElementById("newyear").innerHTML = "<center><b> C НОВЫМ ГОДОМ !!! </b></center> ";}
}
//-->
</script>

</head>

<body onload="newYearIn();">

<span id="newyear"></span>

</body>

</html>

Пользуйтесь на здоровье (кому надо) :D
Выглядит вот так:

MorgaN 25.12.2008 22:36

А можно изменить этот скрипт так чтобы он синхронизировал время не с компьютера пользователя а с сервера?
Только я не много понимаю в java, поподробнее плиз...

regas_07 26.12.2008 00:08

блин вещь хорошая но если ставить его на юкозе (не знаю как на других хостингах) сайт просто ужасно лагает =(

NOboDy 26.12.2008 00:44

Цитата:

Сообщение от regas_07 (Сообщение 333336)
блин вещь хорошая но если ставить его на юкозе (не знаю как на других хостингах) сайт просто ужасно лагает =(

Это наверное от того, что
Цитата:

Сообщение от Elendil (Сообщение 330678)
setTimeout("newYearIn()",10);

Т.е. функция будет пересчитывать время 100 раз в секунду. Нахрен стока?
Можно спокойно выставить таймаут в 500 или даже 1000 и не париться.

Цитата:

Сообщение от morgan (Сообщение 333300)
А можно изменить этот скрипт так чтобы он синхронизировал время не с компьютера пользователя а с сервера?

По идее можно сделать так, что время будет запрашиваться у сервера
через xmlhttp. Но запросы идут до сервера и обратно довольно долго,
поэтому время будет немного неточным. В любом случае это врядли
можно будет назвать "изменить скрипт".


Текущее время: 20:25. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot