Как реализовать зацикленный обратный отсчет

arsen

НЕрядовой
Регистрация
16 Июн 2011
Сообщения
1.078
Реакции
355
Хочу сделать зацикленный обратный отсчет то есть
до конца акции осталось 3 дня и таймер пошел-как только 0 -перепрыгивает снова на 3 дня
пример Для просмотра ссылки Войди или Зарегистрируйся

Чисто на js не получится, чтобы после доходил до 0 он автоматом начинал опять отсчет на 3 дня. Или надо вручную каждый раз вводить дату конца акции или чтобы каждый день показывал, что осталось еще 3 дня.
как сжелать вручную я знаю,интресует именно автоматический перевод
 
а кол-во дней до акции - это константа и постоянно одно и то же значение или разное(к примеру которое берется из БД)?
 
Ну вы даёте.
PHP:
var nextFinDays = 2 - Math.floor((new Date()).getTime()/1000/60/60/24) % 3
значение переменной nextFinDays после этой строки будет равно 0, 1 или 2.
0 - акция закончится сегодня, 1 - завтра, 2 - послезавтра
далее вам нужно создать дату (new Date()) на время 23:59:59.999 c прибавлением к дням этого числа.
ну а дальше код самого счетчика уже...
видите? сделан на чистом JS
 
это если кол-во дней до конца акции всегда одно и то же и равно 3-м, что я и спрашивал в первом предложении
но ведь реально на сайте я думаю не будет каждый раз одно и то же кол-во дней до конца акции? а может быть и 3 и 4 и т.д., т.е. по истечению акции которая длилась 3 дня может начаться акция которая будет 5 дней и т.д. и чтобы цикличность работала и в этом случае
вот собственно в чем мой вопрос и заключался - в том чтобы понять какого типа должна быть цикличность
 
это если кол-во дней до конца акции всегда одно и то же и равно 3-м, что я и спрашивал в первом предложении
но ведь реально на сайте я думаю не будет каждый раз одно и то же кол-во дней до конца акции? а может быть и 3 и 4 и т.д., т.е. по истечению акции которая длилась 3 дня может начаться акция которая будет 5 дней и т.д. и чтобы цикличность работала и в этом случае
вот собственно в чем мой вопрос и заключался - в том чтобы понять какого типа должна быть цикличность
в том то и дело - заказчику приспичило запилить 3 дня до акции по кругу - типа у него в магазе всегда акция
 
PHP:
<Script Language="JavaScript">
var d = new Date().getDay();
if(d==0||d==3||d==6)day=3;
if(d==1||d==4)day=2;
if(d==2||d==5)day=1;
alert('осталось дней: '+day);
</Script>
 
PHP:
<Script Language="JavaScript">
var d = new Date().getDay();
if(d==0||d==3||d==6)day=3;
if(d==1||d==4)day=2;
if(d==2||d==5)day=1;
alert('осталось дней: '+day);
</Script>
Вы решили ту же самую задачу что и я. Только я решил одной строчкой, и по 3 дня отмеряется на всей временной линии, независимо от дня недели. Видать, автору заготовки не нужны, а нужен полный код.
а можно еще прикрутить часы и минуты?
Как всегда, чистый JS
PHP:
// Получаем сколько дней до конца акции
var nextFinDays = 2 - Math.floor((new Date()).getTime()/1000/60/60/24) % 3
var finDate = new Date()
// Устанавливаем дату окончания акции
finDate.setDate(finDate.getDate() + nextFinDays)
// Устанавливаем время окончания акции (23:59:59)
finDate.setHours(23)
finDate.setMinutes(59)
finDate.setSeconds(59)
// Вычисляем разницу времени окончания акции к текущему времени.
var diff = finDate.getTime() - (new Date()).getTime()
// Выводим результаты через alert()
alert('Осталось '
+ Math.floor(diff/=1000)%60 + ' сек. '
+ Math.floor(diff/=60)%60 + ' мин. '
+ Math.floor(diff/=60)%24 + ' час. '
+ Math.floor(diff/=24) + ' дней. '
)
 
Назад
Сверху