Ответ
 
Опции темы
Старый 16.12.2008, 00:51      #1
Elendil
Местный
Пользователь Mozilla Firefox
 
Аватар для Elendil
По умолчанию Таймер

Приближается глобальное событие - Новый Год.
Вот и задался вопросом о том, как считать время до этого события.
В сети нашел инфу в виде кода.
Код:
<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 - время в секундах, после которого будет выполнено перенаправление.
Возможно обновление только таймера?

Смысл чтобы обновлялось не на f5, а само по себе как встроенные часы, если такое возможно.
__________________
Жду игру: Играю в Natural Selection 2
[StarWars].doc - clan HL

Последний раз редактировалось Elendil; 16.12.2008 в 00:56.
Elendil вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 16.12.2008, 01:42      #2
MDM
Администратор
[BATTLE]TEAM
Пользователь Mozilla Firefox
 
Аватар для MDM
По умолчанию

Вынеси расчеты в функцию (например, daysleft()), добавь в нее установку таймера:
Код HTML:
	setTimeout('daysleft()', 1000);
Затем вызови ее:
Код HTML:
	daysleft();
И напряги Google запросом "javascript setTimeout".
__________________
[BATTLE]SERVER
MDM вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 18.12.2008, 00:43      #3
Elendil
Местный
Пользователь Mozilla Firefox
 
Аватар для Elendil
Лампочка

Гугл помог!
Для всех желающих разместить таймер ловите код, выглядит страшно, но все работает.
Один из плюсов данного скрипта - согласование в дате.
Пример: 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>
Пользуйтесь на здоровье (кому надо)
Выглядит вот так:
Изображения
Тип файла: jpg ТАЙМЕР.jpg (70.2 Кб, 34 просмотров)
__________________
Жду игру: Играю в Natural Selection 2
[StarWars].doc - clan HL

Последний раз редактировалось Elendil; 18.12.2008 в 01:01.
Elendil вне форума Пол: Мужчина   Ответить с цитированием Вверх
Благодарности: 5
Dragonfire (24.12.2008), MorgaN (25.12.2008), Muskul (22.12.2008), regas_07 (20.12.2008), Ringo (18.12.2008)
Старый 25.12.2008, 22:36      #4
MorgaN
Firefox User
Пользователь Mozilla Firefox
 
Аватар для MorgaN
По умолчанию

А можно изменить этот скрипт так чтобы он синхронизировал время не с компьютера пользователя а с сервера?
Только я не много понимаю в java, поподробнее плиз...
__________________
Не забудте нажать [спасибо] , если помог
Команда Grand Lions
MorgaN вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 26.12.2008, 00:08      #5
regas_07
Пользователь
Пользователь Mozilla Firefox
 
Аватар для regas_07
По умолчанию

блин вещь хорошая но если ставить его на юкозе (не знаю как на других хостингах) сайт просто ужасно лагает =(
regas_07 вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 26.12.2008, 00:44      #6
NOboDy
Пользователь
 
Аватар для NOboDy
По умолчанию

Сообщение от regas_07 Посмотреть сообщение
блин вещь хорошая но если ставить его на юкозе (не знаю как на других хостингах) сайт просто ужасно лагает =(
Это наверное от того, что
Сообщение от Elendil Посмотреть сообщение
setTimeout("newYearIn()",10);
Т.е. функция будет пересчитывать время 100 раз в секунду. Нахрен стока?
Можно спокойно выставить таймаут в 500 или даже 1000 и не париться.

Сообщение от morgan Посмотреть сообщение
А можно изменить этот скрипт так чтобы он синхронизировал время не с компьютера пользователя а с сервера?
По идее можно сделать так, что время будет запрашиваться у сервера
через xmlhttp. Но запросы идут до сервера и обратно довольно долго,
поэтому время будет немного неточным. В любом случае это врядли
можно будет назвать "изменить скрипт".
NOboDy вне форума   Ответить с цитированием Вверх
Благодарности: 1
MorgaN (26.12.2008)
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Обратная связь
Текущее время: 15:39. Часовой пояс GMT +3.


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