Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2010, 16:12   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Обратный отсчет в real time

Очень хотелось бы сделать таймер обратного отсчета до определенной даты с точностью до секунды. Например, чтобы отображалось:

До 12.04.2011 осталось:
- DDDD дней,
- HH часов
- MM минут
- SS секунд

Причем хотелось бы, чтобы страница не просто показывала остаток (это у меня и так есть - готовый "виджет" от сервера), а чтобы еще велся отсчет (например, каждые 5 секунд обновлялось).

Можно ли это сделать в Javascript? Если да, то покажите пожалуйста, как это делается. Буду очень благодарен.

P.S. Вот, нашел следующий код, но он почему-то не срабатывает, пишет только слово "осталось" (возможно что-то не так делаю, просто вставил на страницу):
Код HTML:
     <script type="text/javascript">
        time_diff = <?= (mktime(0, 0, 0, 12, 04, 2011) - time()); ?>;
  
        function countDown() {      
           work_number = time_diff--;
           days = Math.floor(work_number / 86400);      
           work_number -= days * 86400;
           hours = Math.floor(work_number / 3600);
           work_number -= hours * 3600;
           minutes = Math.floor(work_number / 60);
           work_number -= minutes * 60;
           seconds = Math.floor(work_number % 60);
           days = (days < 10) ? "0"+days : days;
           hours = (hours < 10) ? "0"+hours : hours;
           minutes = (minutes < 10) ? "0"+minutes : minutes;
           seconds = (seconds < 10) ? "0"+seconds : seconds;
           values = [
              declOfNum(days, ["день", "дня", "дней"]), 
              declOfNum(hours, ["час", "часа", "часов"]), 
              declOfNum(minutes, ["минута", "минуты", "минут"]), 
              declOfNum(seconds, ["секунда", "секунды", "секунд"])
           ];
           document.getElementById('counter').innerHTML =  values.join(" ") + ".";      
        }

        function declOfNum(number, titles) {
           cases = [2, 0, 1, 1, 1, 2];
           return "<b>" + number + "</b> " + titles[ (number%100>4 && number%100<20)? 2 : cases[Math.min(number%10, 5)] ];
        }
     </script>
  <body onload="countDown()">
     <div id="wrapper">
        осталось
        <div id="counter"></div>
     </div>

     <script type="text/javascript">
        setInterval("countDown()", 1000);
     </script>
P.P.S. PHP использовать нельзя, только javascript - ограничение сервера.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 02.03.2010 в 16:15.
Alex Cones вне форума Ответить с цитированием
Старый 02.03.2010, 17:26   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Замени
Код:
time_diff = <?= (mktime(0, 0, 0, 12, 04, 2011) - time()); ?>;
на
Код:
D = new Date();
time_diff = (Date.UTC(2011, 4, 12, 0, 0, 0) - D.getTime()) / 1000;
там же у тебя как раз PHP и был
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 02.03.2010, 17:33   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
там же у тебя как раз PHP и был
В смысле это все PHP или только эта строка? Я в этом не сильно разбираюсь...

Благодарю, замечательно работает!
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.03.2010, 17:39   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Цитата:
Код:
<?= (mktime(0, 0, 0, 12, 04, 2011) - time()); ?>
Вот это вставка на PHP, остальное JS
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 02.03.2010, 17:41   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Благодарю. Надо будет сесть и основательно так...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 09.04.2010, 02:14   #6
galap
Новичок
Джуниор
 
Регистрация: 09.04.2010
Сообщений: 1
По умолчанию

Вот такой интересный вопрос:
Как поместить этот скрипт в php цикл do{} while(), с целью выбирать из базы события до которых остались разные промежутки времени?

Пробовал разные скрипты, но везде одно и тоже: последний работает а перед ним не работают.
galap вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обратный отсчет(таймер) DEsh Microsoft Office Excel 1 19.11.2009 22:45
ОТСЧЕТ ВРЕМЕНИ crit Компоненты Delphi 29 10.06.2009 14:38
Обратный отсчет в прогрессбар Stanislav Общие вопросы Delphi 3 09.01.2008 16:49
Отсчет времени в С Raptor Помощь студентам 13 29.12.2007 16:32
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13