можно и сделать. надо всего-лишь немного поучиться :1133:
Вид для печати
можно и сделать. надо всего-лишь немного поучиться :1133:
Я так понимаю что в Елсе нада увеличивать дату, но как потом эту переменную передавать в функцию, если она все равно все с нуля считает... Походу надо что то еще) Или менять сам подход к подсчету через цикл както... Может поможете немного?)
чем лезть в особенности кода, попробуйте сначала составить алгоритм работы такого таймера
распишите как можно подробнее
потом по этому алгоритму можно будет составить код
переменной присваивается конечная дата
берется текущая дата
проверка меньше ли текущая дата конечной
ДА(подсчет и вывод числа)
НЕТ(увеличение переменной конечной даты на 7 дней и проверка заново)
Добиться результата путем незначительных изменений в коде я не смог... переменную конечной даты нужно сохранить, а эта функция считает все заново и переменная для нее уже при втором подсчете не определена. Можно было бы все просто организовать в цикле, но без таймаута все повисает.
Вроде сделал, отсчитывает время дособытия, до конца события, плюсует 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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<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>
столкнулся с проблемой в <body onLoad т.к у меня уже прописаны значения для кнопок, а вот как разделить старые значения и новые??
через точку с запятой можно перечислить несколько функций
Во окончательная версия кода, авось комуто пригодится)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">ЗЫ: насчет onload, столкнулся с проблемой что в некоторых скриптах прописывается автозапуск прямо в середине скрипта через window.onload изза этого не запускались скрипты из боди, это нормально? пришлось поубираь все автозапуски в боди)
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<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>
А у меня вопрос такой:
У меня несколько отсчетных дат.
Как прописывается в теле body такая функция с параметрами времени?
что-то типа такого:
<body onload=time()>
timeout(19.02.09 14:30);
timeout(24.02.09 20:00);
и т.д.
...
это я смысл донес.. как задать подобным образом?