Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Отсчет времени до события (JavaScript)

Ответить
Настройки темы
Отсчет времени до события (JavaScript)

Аватара для Котяра

Ветеран


Сообщения: 2907
Благодарности: 331


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Котяра
Дата: 26-06-2008
Можно ли сделать отсчет отсчет времени до события (скажем, до 31.12.08 23:59 ) на JS?
И чтобы секунды обновлялись без перезагрузки страницы.

Отправлено: 19:52, 26-06-2008

 

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Поподробнее, пожалуйста, что хочется получить.
Счётчик вроде "До армагеддона осталось 5 часов 17 минут и 56 секунд" или же чтобы через каждые десять секунд, предположим, открывался новый абзац текста?

Отправлено: 20:22, 26-06-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Котяра

Ветеран


Сообщения: 2907
Благодарности: 331

Профиль | Отправить PM | Цитировать


Цитата Coutty:
Счётчик вроде "До армагеддона осталось 5 часов 17 минут и 56 секунд" »
Именно это.

Отправлено: 20:43, 26-06-2008 | #3


Аватара для Котяра

Ветеран


Сообщения: 2907
Благодарности: 331

Профиль | Отправить PM | Цитировать


Помогите мне!

Отправлено: 21:06, 26-06-2008 | #4


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Наверняка можно найти уже готовое, но мы не ищем лёгких путей
HTML код: Выделить весь код
<html> <head> <title>Демонстрация</title> <script> // эти три переменные можно генерировать php-скриптом на основе каких-то данных // или же прописать ручками, но тогда они при каждом запросе будут одни и те же var hour = 5; var min = 17; var sec = 56; var timer; // ссылка на таймер, который потом можно будет остановить // это необязательно, просто мне нравится начинать все свои скрипты с main() :) // вызов её прописывается в <body onload="main()"> function main() { timer = window.setInterval("showTime()", 1000); // каждые 1000 мс вызываем функцию showTime() } function showTime() { sec--; // каждый вызов функции приводит к уменьшению на 1 секунду if (sec < 0) // если секунды ушли в минус, { sec = 59; // возвращаем их в 59 min--; // и уменьшаем минуту if (min < 0) // если минуты ушли в минус { min = 59; // возвращаем их в 59 hour--; // и уменьшаем час на единицу if (hour < 0) // а уж если и час в минус ушёл { window.clearInterval(timer); // значит хватит считать, снимаем таймер, чтоб функция больше не вызывалась document.getElementById("showTime").innerHTML = "<span style='color:red'>Армагеддон наступил!</span>"; // и выводим красными буквами приветствие:) } } } // окончание вычисления такое: document.getElementById("showTime").innerHTML = "До армагеддона осталось " + hour + " часов " + min + " минут " + sec + " секунд"; } </script> <body onload="main()"> <div id="showTime">Сюда будет вписываться текст</div> </body> </html>

В общем-то, мне влом проверять (создать файл, записать, открыть...), но должно работать как надо.

Отправлено: 21:21, 26-06-2008 | #5


Аватара для Котяра

Ветеран


Сообщения: 2907
Благодарности: 331

Профиль | Отправить PM | Цитировать


Coutty, мне надо. чтобы были и дни

Отправлено: 21:24, 26-06-2008 | #6


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Только оно немного не по-русски будет писать иногда Например: "1 часов 2 минут 52 секунд".
Можно и так сделать:
HTML код: Выделить весь код
document.getElementById("showTime").innerHTML = "До армагеддона осталось времени: " + hour + ":" + min + ":" + sec + ":";

Тогда будет выводиться: "До армагеддона осталось времени: 5:17:56".

Проверил. Работает.

А что, до матча Россия-Испания засечь хочешь?)) Такая срочность...

Ну так и дни добавим

HTML код: Выделить весь код
<html> <head> <title>Демонстрация</title> <script> // эти три переменные можно генерировать php-скриптом на основе каких-то данных // или же прописать ручками, но тогда они при каждом запросе будут одни и те же var days = 8; var hour = 5; var min = 17; var sec = 56; var timer; // ссылка на таймер, который потом можно будет остановить // это необязательно, просто мне нравится начинать все свои скрипты с main() :) // вызов её прописывается в <body onload="main()"> function main() { timer = window.setInterval("showTime()", 1000); // каждые 1000 мс вызываем функцию showTime() } function showTime() { sec--; // каждый вызов функции приводит к уменьшению на 1 секунду if (sec < 0) // если секунды ушли в минус, { sec = 59; // возвращаем их в 59 min--; // и уменьшаем минуту if (min < 0) // если минуты ушли в минус { min = 59; // возвращаем их в 59 hour--; // и уменьшаем час на единицу if (hour < 0) // а уж если и час в минус ушёл { hour = 23; days--; if (days < 0) { window.clearInterval(timer); // значит хватит считать, снимаем таймер, чтоб функция больше не вызывалась document.getElementById("showTime").innerHTML = "<span style='color:red'>Армагеддон наступил!</span>"; // и выводим красными буквами приветствие:) } } } } // окончание вычисления такое: document.getElementById("showTime").innerHTML = "До армагеддона осталось времени: " + days + " дней " + hour + " часов " + min + " минут " + sec + " секунд"; } </script> <body onload="main()"> <div id="showTime">Сюда будет вписываться текст</div> </body> </html>

Если надо, чтобы ещё и наименования к цифрам по-русски склонялись, то код немного усложниться. Но если такой необходимости нет, то я зря не буду уж

Так, вопрос обновился в шапке. Сейчас поменяем ещё раз

Отправлено: 21:25, 26-06-2008 | #7


Аватара для Котяра

Ветеран


Сообщения: 2907
Благодарности: 331

Профиль | Отправить PM | Цитировать


Цитата Coutty:
// эти три переменные можно генерировать php-скриптом на основе каких-то данных // или же прописать ручками, но тогда они при каждом запросе будут одни и те же »
Вот в этом проблема! Событие до которого нужно считать, имеет конкретную дату и конкретное время (см. пример с новым годом в шапке). PHP нет возможности сделать!

Цитата Coutty:
А что, до матча Россия-Испания засечь хочешь?)) Такая срочность... »
До финала

Отправлено: 21:30, 26-06-2008 | #8


Аватара для Котяра

Ветеран


Сообщения: 2907
Благодарности: 331

Профиль | Отправить PM | Цитировать


Так можно ли реализовать с помощью JavaScript аналог скрипта Coutty, только чтобы считалось время до даты. Если JavaScript не может открывать системные часы, то надо, чтобы под таймером была строка
ВВЕДИТЕ ВРЕМЯ И ДАТУ:
[].[].[] []:[] [вкл. таймер]
и спрашивалось это у пользователей.

Отправлено: 22:10, 26-06-2008 | #9


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


HTML код: Выделить весь код
<html> <head> <title>Демонстрация посложнее</title> <script> var final = {'year':2008, 'month':12, 'day':31, 'hour':23, 'min':59, 'sec':59}; // это дата и время, до которых надо считать var months = [31,28,31,30,31,30,31,31,30,31,30,31]; // количество дней в месяцах. В феврале поставил 28. Пусть будет:) var d = new Date(); var year = final.year - d.getFullYear(); // вычисляем, сколько надо лет отсчитывать var month = final.month - d.getMonth() - 1; if (year && final.month < d.getMonth()) month += 12; // если количество оставшихся лет больше нуля, увеличиваем месяцы на 12. Ну по логике так надо сделать var days = final.day - d.getDate() - 1; if (month && final.day < d.getDate()) { days += months[month-1]; // если месяцев больше 0, то количество дней увеличивается на количество дней в предыдущем месяце month--; } var hour = final.hour - d.getHours(); var min = final.min - d.getMinutes(); var sec = final.sec - d.getSeconds(); var timer; // ссылка на таймер, который потом можно будет остановить // это необязательно, просто мне нравится начинать все свои скрипты с main() :) // вызов её прописывается в <body onload="main()"> function main() { timer = window.setInterval("showTime()", 1000); // каждые 1000 мс вызываем функцию showTime() } function showTime() { sec--; // каждый вызов функции приводит к уменьшению на 1 секунду if (sec < 0) // если секунды ушли в минус, { sec = 59; // возвращаем их в 59 min--; // и уменьшаем минуту if (min < 0) // если минуты ушли в минус { min = 59; // возвращаем их в 59 hour--; // и уменьшаем час на единицу if (hour < 0) // а уж если и час в минус ушёл { hour = 23; day--; if (day < 0) { day = months[month-1]; month--; if (month < 0) { month = 12; year--; if (year < 0) { window.clearInterval(timer); // значит хватит считать, снимаем таймер, чтоб функция больше не вызывалась document.getElementById("showTime").innerHTML = "<span style='color:red'>Армагеддон наступил!</span>"; // и выводим красными буквами приветствие:) } } } } } } // окончание вычисления такое: text = "До армагеддона осталось "; switch(year) { case 0: text += "0 лет "; break; case 1: text += "1 год "; break; case 2: case 3: case 4: text += year + " года "; break; default: text += year + " лет "; break; } switch(month) { case 0: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: text += month + " месяцев "; break; case 1: text += month + " месяц "; break; case 2: case 3: case 4: text += month + " месяца "; break; } switch(days) { case 1: case 21: case 31: text += days + " день "; break; case 2: case 3: case 4: case 22: case 23: case 24: text += days + " дня "; break; default: text += days + " дней "; break; } text += " и вот столько ещё времени: " + hour + ":"; if (min.toString().length == 1) text += "0"; text += min + ":"; if (sec.toString().length == 1) text += "0"; text += sec; document.getElementById("showTime").innerHTML = text; } </script> <body onload="main(); showTime();"> <div id="showTime">Сюда будет вписываться текст</div> </body> </html>

Я не гарантирую полную правильность работы - может быть дни или месяцы или ещё чего будет считать неправильно, но... Уже за полночь, а мне спать осталось меньше 8 часов-ня
На первый взгляд всё работает. Скрипт-то, в общем, не сложный.

Отправлено: 22:15, 26-06-2008 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Отсчет времени до события (JavaScript)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EventID - Уведомление Ист. события: HHCTRL Категория события: Отсутствует. Код события: 1903 cleric1985_n Устранение критических ошибок Windows 7 27-11-2015 16:14
EventID - Источник события: SceCli, код события: 1202, предупреждение 0x534 Michael Устранение критических ошибок Windows 3 28-01-2009 13:25
EventID - Источник события: Virtual Disk Service, Код события: 6 oleg_an Устранение критических ошибок Windows 1 09-11-2007 18:05
EventID - [решено] Источник события:Windows Installer 3.1 Код события: 4379 ozzik Устранение критических ошибок Windows 2 31-10-2007 15:41
Категория события: Доступ к службе каталогов - Код события: 565 Kostyl Microsoft Windows NT/2000/2003 1 19-10-2005 08:33




 
Переход