хелп! помогите нужен таймер обратного отсчета пример:
До .... осталось 300 дней 12 часов 38 минут 15 секунд 5 милисекунд!!!!
вот хочется именно чтоб были секунды и милисекунды... и надо чтоб при обновление не менялось значенеи! т.е. допустим до НГ осталось 10 дней и чтоб он всегда показывал что 9 дней 59 секунд, он не вновь начинал а продолжал...
07.06.2008, 18:02
Diablo
хаотичное объяснение
08.06.2008, 10:10
Exterior
Mignon,
<!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">
<title>Вычисление времени до Нового года by HTML.BY team</title>
<script type="text/javascript">
<!--
function newYearIn()
{
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)));
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 = "До Нового Года осталось: "+RemainsFullDays+" дней "+RemainsFullHours+":"+RemainsMinutes+":"+lastSec+"."+mc;
setTimeout("newYearIn()",10);
}
else {document.getElementById("newyear").innerHTML = "C НОВЫМ ГОДОМ !!!";}
}
//-->
</script>
</head>
<body onload="newYearIn();">
<span id="newyear"></span>
</body>
</html>
20.06.2008, 08:29
Сергей111
А как сделать, чтобы этот скрипт показывался в нужном мне месте, а не вверху окна???
20.06.2008, 08:38
Exterior
Сергей111, строчку <span id="newyear"></span> вставляете в любое место вашей страницы, например, в ячейку таблицы:
<p>Text text text text text text text text text text text text text text
text text text text text text <span id="newyear"></span> text text text
text text text text text text text text text text text text text text </p>
20.06.2008, 08:47
Сергей111
а как можно отредактировать? цифры жирнее например сделать?
П. С. Поражаюсь быстротой ваших ответов и самое интересное - все получается! ))
13.10.2008, 05:06
pasha12345
А как сделать, что бы слово "дней" менялось на "дня", если остаётся 2, 3, 4, 22, 23, 24 дня, и на "день", если остаётся 1, 21 и 31 день?
13.10.2008, 09:17
Webmaster
pasha12345, вы в своем вопросе сами и ответили на вопрос
надо поставить такую проверку, если то-то то сделать то-то
13.10.2008, 09:39
pasha12345
Ну вообще-то мне знакомый уже помог, но - спасибо за ответ ;)
13.10.2008, 12:32
keron
Подскажите, пожалуйста, как можно осуществить переадресацию к примеру на finish.php в случае, если [totalRemains<=1], т.е. чтоб не выводился текст "С новым годом", а была переадресация.
Я попробовал вместо document.getElementById('newyear').innerHTML = "С новым годом" вставить: location.href = 'finish.php'; Переадресация идет, но есть одно НО: когда запускаю заново скрипт с новым значением истекаемой даты, то видимо почему-то totalRemains сохраняет старое значение и опять выполняется действие при [totalRemains<=1], т.е. переадресация.
Как можно сделать корректную переадресацию, чтобы при последующем запуске скрипта счетчик работал.
Спасибо!
13.10.2008, 21:40
Exterior
keron, если вы указали правильную будущую дату в переменной newYear, то все работает как надо. Вот например, дата 13-е октября 22.30 записывается так:
var newYear = new Date("Oct,13,2008,22:30:00");
и если, как вы правильно сказали, вместо строки
document.getElementById("newyear").innerHTML = "C НОВЫМ ГОДОМ !!!";
указать
location.href = 'finish.php';
то при наступлении установленного времени произойдет переадресация, и, если не изменять данные времени, при последующем запуске скрипта снова произойдет переадресация, если же изменить данные времени (на будущее) и загрузить/обновить страницу со скриптом, то отобразится таймер, как и должно быть. Возможно, у вас просто кешируется страница или вы пытаетесь обновить не страницу со скриптом, а переадресованную страницу, т.е. finish.php.
18.10.2008, 12:31
keron
Спасибо за ответ, поставил запрет на кэширование, все нормализовалось.
27.11.2008, 05:45
peoplesart
Подскажите пожалуйста
А как сделать, что бы слово "дней" менялось на "дня", если остаётся 2, 3, 4, 22, 23, 24 дня, и на "день", если остаётся 1, 21 и 31 день?
27.11.2008, 08:17
Diablo
вставте проверку даты и заменяйте при соответствии дней на дня
27.11.2008, 11:07
peoplesart
Если вас не затруднит.. напишите пожалуйста что нужно вставить в код.. я не силен
:1128:Подскажите Если вас не затруднит.. напишите пожалуйста что нужно вставить в код.. я не силен в програмирование.. либо хотябы на одной дате покажите пример =)
27.11.2008, 11:28
Webmaster
раз за вас приходится делать, то не откажите в любезности разместить ссылочку на странице таймера
<!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">
<title>Вычисление времени до Нового года by HTML.BY team</title>
<script type="text/javascript">
<!--
function newYearIn()
{
var days=" дней "
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=" дня "
}
if (
RemainsFullDays==1 ||
RemainsFullDays==21 ||
RemainsFullDays==31
) {
days=" день "
}
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 = "До Нового Года осталось: "+RemainsFullDays+days+RemainsFullHours+":"+RemainsMinutes+":"+lastSec+"."+mc;
setTimeout("newYearIn()",10);
}
else {document.getElementById("newyear").innerHTML = "C НОВЫМ ГОДОМ !!!";}
}
//-->
</script>
раз за вас приходится делать, то не откажите в любезности разместить ссылочку на странице таймера
Огромная благодарность за отзывчивость. Дела всегда были лучше слов. :0047::0051:
В этом скрипте мне не понятна одна вещь:
На примере:
При оставшемся времени 25 дней, 12:25:21 миллисекунды отображаются как "ХХ".
Как только дней становится меньше 10, миллисекунды уже в формате "Х". При дальнейшем уменьшении дней (0 дней) , 9 часов и т.д. миллисекунды уже вообще не отображаются. Хотелось бы чтобы миллисекунды отображались при любом оставшемся количестве дней, часов и т.д.
Вопрос может и глупый, но я не специалист :0048: и решить эту проблему не могу. Поможете?
...Так в тишине прошли сутки...
Ребята, это игнор??
05.02.2009, 22:32
LogicKiller
Огромное спасибо за код, очень удобный таймер. У меня вопрос: если использовать таймер в дугих целях, можно както по окончании переводить конечную дату скажем на неделю. Буду крайне благодарен хотябы за намек как это реализовать.
ЗЫ: с милисекундами таже проблема, плюс они у меня вообще не отсчитываются а насчитываются, я их совсем убрал.
05.02.2009, 23:37
Webmaster
не совсем понял, что вы хотите сделать
но дату до которой производится рассчет - можно поменять
var newYear = new Date("Feb,10,2009,00:00:00");
06.02.2009, 19:34
LogicKiller
Угу) Но как говорится лень - двигатель прогресса) Еслиб оно на автомате както проверяло что время истекло, увеличивало конечную дату на неделю и заново отсчитывало... Я пытался применить свои знания в программировании , но незнание джаваскрипта взяло верх) кажется моя идея тут не реализируется(
06.02.2009, 21:31
Webmaster
можно и сделать. надо всего-лишь немного поучиться :1133:
07.02.2009, 11:48
LogicKiller
Я так понимаю что в Елсе нада увеличивать дату, но как потом эту переменную передавать в функцию, если она все равно все с нуля считает... Походу надо что то еще) Или менять сам подход к подсчету через цикл както... Может поможете немного?)
07.02.2009, 12:41
Webmaster
чем лезть в особенности кода, попробуйте сначала составить алгоритм работы такого таймера
распишите как можно подробнее
потом по этому алгоритму можно будет составить код
07.02.2009, 21:00
LogicKiller
переменной присваивается конечная дата
берется текущая дата
проверка меньше ли текущая дата конечной
ДА(подсчет и вывод числа)
НЕТ(увеличение переменной конечной даты на 7 дней и проверка заново)
Добиться результата путем незначительных изменений в коде я не смог... переменную конечной даты нужно сохранить, а эта функция считает все заново и переменная для нее уже при втором подсчете не определена. Можно было бы все просто организовать в цикле, но без таймаута все повисает.
07.02.2009, 22:01
LogicKiller
Вроде сделал, отсчитывает время дособытия, до конца события, плюсует 7 дней и поновой) Ну как?) А ссылку я вашу вродь добавил, токо незнаю сильно ли поможет... я не сильно индексированием увлекался...
<!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">
<title>Вычисление времени до Нового года by HTML.BY team</title>
<SCRIPT language=JavaScript>
<!--
function newYearIn(newYear)
{
var now = new Date();
// var newYear = new Date("Feb,07,2009,22:00:00,+0200");
var totalRemains = (newYear-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
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};
document.getElementById('newyear').innerHTML = "To the next GRB left: "+RemainsFullDays+" days "+RemainsFullHours+":"+RemainsMinutes+":"+lastSec;
setTimeout(function () { newYearIn(newYear); }, 1000);
}
else {var now = new Date();
var newYear1 = (newYear+3600000);
var totalRemains = (newYear1-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
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};
document.getElementById('newyear').innerHTML = "To the end of GRB left: "+RemainsMinutes+":"+lastSec;
setTimeout(function () { newYearIn(newYear); }, 1000);
}
else {var newYear =(newYear+604800000);
setTimeout(function () { newYearIn(newYear); },0);}}
}
//-->
</script>
</head>
<body onload="newYearIn(1234036800000);">
<span id="newyear"></span>
</body>
</html>
07.02.2009, 22:12
Webmaster
Цитата:
Сообщение от LogicKiller
Вроде сделал, отсчитывает время дособытия, до конца события, плюсует 7 дней и поновой) Ну как?) А ссылку я вашу вродь добавил, токо незнаю сильно ли поможет... я не сильно индексированием увлекался...
ну вот и здорово, что сами сделали, написание алгоритма намного упрощает написание программ :0051:
за ссылку. спасибо :0113:
08.02.2009, 00:44
Пират
столкнулся с проблемой в <body onLoad т.к у меня уже прописаны значения для кнопок, а вот как разделить старые значения и новые??
08.02.2009, 01:07
Webmaster
через точку с запятой можно перечислить несколько функций
10.02.2009, 22:53
LogicKiller
Во окончательная версия кода, авось комуто пригодится)
<!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">
<title>Вычисление времени до Нового года by HTML.BY team</title>
<SCRIPT language=JavaScript>
<!--
function newYearIn1(){
var newYear1 = new Date("Feb,07,2009,22:00:00,+0200"); //дата событя с учетом часового пояса
setTimeout(function () { newYearIn(newYear1.getTime()); },0);
}
function newYearIn(newYear)
{
var now = new Date();
var totalRemains = (newYear-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
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};
document.getElementById('newyear').innerHTML = "To the next GRB left: "+RemainsFullDays+" days "+RemainsFullHours+":"+RemainsMinutes+":"+lastSec;
setTimeout(function () { newYearIn(newYear); }, 1000);
}
else {var now = new Date();
var newYear2 =1 // длительность события в часах
var newYear1 = (newYear+newYear2*3600000);
var totalRemains = (newYear1-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
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};
document.getElementById('newyear').innerHTML = "To the end of GRB left: "+RemainsMinutes+":"+lastSec;
setTimeout(function () { newYearIn(newYear); }, 1000);
}
else {
var newYear3 =7 // на сколько перевоят таймер в днях
var newYear =(newYear+newYear3*86400000);
setTimeout(function () { newYearIn(newYear); },0);}}
}
//-->
</script>
</head>
<body onload="newYearIn1();">
<span id="newyear"></span>
</body>
</html>
ЗЫ: насчет onload, столкнулся с проблемой что в некоторых скриптах прописывается автозапуск прямо в середине скрипта через window.onload изза этого не запускались скрипты из боди, это нормально? пришлось поубираь все автозапуски в боди)
19.02.2009, 12:15
danilk
А у меня вопрос такой:
У меня несколько отсчетных дат.
Как прописывается в теле body такая функция с параметрами времени?
что-то типа такого:
<body onload=time()>
timeout(19.02.09 14:30);
timeout(24.02.09 20:00);
и т.д.
...
это я смысл донес.. как задать подобным образом?
22.02.2009, 10:09
LogicKiller
На сколько я знаю, скрипты оперируют датой переведенной в миллисекунды, естесно так пользоваться неудобно, я б создал 2 минифункции. Эти функции переводят дату во время и передают в основную функцию newYearIn(). Дальше все зависит от особенностей твоего таймера.
ЗЫ: админ не сердчай если я нерационально сделал)
<body onload="time1();time2()">
function time1(){
var newYear1 = new Date("Feb,19,2009,14:30:00");
setTimeout(function () { newYearIn(time1.getTime()); },0);
}
function time2(){
var newYear1 = new Date("Feb,24,2009,20:00:00");
setTimeout(function () { newYearIn(time2.getTime()); },0);
}
function newYearIn()
{}
22.02.2009, 21:22
danilk
не много не то...
У меня может появится в день до 5-6 конкурсов с временым отсчетом, а некоторые могут завершиться. Вот и получается, что то исчезло, это появилось.
Можно обойтись пропиской одной функции в загрузку body,
а в теле самого body уже вставлять столько этих функций, сколько надо.
т.е. опять:
<body load="функция()">
функция(12.03.09 14:40);
функция(14.03.09 11:90);
и пошло поехало...
27.04.2009, 14:07
volkodav
а как переделать этот скрипт, чтобы он отсчитывал 15 секунд в обратном направлении? от 15 и до 1 ?
28.05.2009, 18:17
sebun
Цитата:
Сообщение от Mignon
хелп! помогите нужен таймер обратного отсчета пример:
До .... осталось 300 дней 12 часов 38 минут 15 секунд 5 милисекунд!!!!
вот хочется именно чтоб были секунды и милисекунды... и надо чтоб при обновление не менялось значенеи! т.е. допустим до НГ осталось 10 дней и чтоб он всегда показывал что 9 дней 59 секунд, он не вновь начинал а продолжал...
Хотелось бы пообщаться с автором скрипта... Дело в том, что у нас на сайте биллинговой системы tvcss.net используется несколько JawaScript-ов, например, модальные окна. Данный скрипт замечательно работает, если находиться на отдельной странице, где не подгружается больше никаких других скриптов. Но как только я ставлю его в свой шаблон хедера, скрипт перестает работать. Подозреваю, что причина - в использовании общих переменных. Я сам не разбираюсь в яве, поэтому хочу спросить: можно ли как-то изменить этот скрипт, чтобы он использовал свои уникальные переменные или что-то еще, но работал при всех имеющихся на tvcss.net дополнительных скриптах и подгружаемых библиотеках?
Если не в лом, напишите пожалуйста скрипт. Задача - выводить оставшееся время до перезагрузки сервера, которая происходит один раз в сутки - в 5 утра. Тоесть дни считать не нужно.
28.05.2009, 19:12
Galen
Нужно просто заменить переменные на уникальные и всё будет работать.
А код где-то был на форуме, через поиск посмотрите.
31.05.2009, 21:14
Artes
У меня такая проблемка:
встроил таймер в тест, и ни как не получается зделать так что бы по окончанию времени на таймере шел подсчет промежуточных данных, то есть на сколько вопросов на данном этапе ответил студент, и соответственно оценка.
Прошу помочь
вот и сам код:
Приветствую всех, в общем появилась одна проблема, возможно Вы поможете решить.
Есть Php функция которая в зависимости от того есть значение d-m в массиве или нет выводит или баннер или флешку, так вот вопрос, как бы сделать так используя ваш таймер чтоб выводилось время до следующего события?
То есть проблема с передачей следующего времени в таймер :(
13.08.2009, 21:27
Martins
Немного подкоректировал этот скрипт, чтоб дни, часы, минуты и секунды отображались в отднльный контейнерах:
<script type="text/javascript">
<!--
function newYearIn()
{
var now = new Date();
var newYear = new Date("Sep,04,2009,22:00:00");
var totalRemains = (newYear.getTime()-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
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("Sep 4, 2009, 22:00:00");
var mcnow = now.getTime();
var mc = ((mcend-mcnow)/10).toFixed(0).substr(8);
document.getElementById('с1').innerHTML = RemainsFullDays;
document.getElementById('с2').innerHTML = RemainsFullHours;
document.getElementById('с3').innerHTML = RemainsMinutes;
document.getElementById('с4').innerHTML = lastSec;
setTimeout("newYearIn()",10);
}
else {document.getElementById("с1").innerHTML = "Уже начало!!!";}
}
//-->
</script>