Обратный отсчет jQuery / подсчет значений на стороне сервера

StackOverflow https://stackoverflow.com/questions/2445723

Вопрос

Сценарий: http://keith-wood.name/countdown.htm

Ежедневный ответ в формате json:

items: { fajr: '5:23 am', sharooq: '7:23 am', dhur: '1:34 pm', asr: '4:66 pm': magrib: '6:23 pm', isha: '8:01 pm'}

Когда сайт загружается, я делаю Ajax-запрос и получаю указанное выше время отклика.Это события, которые происходят ежедневно, с разным временем.Я хочу получить это время и отсчитать, сколько осталось минут, часов или секунд, и показать это, а как только секунды закончатся, то показать, сколько минут назад произошло это событие.Через 15 минут покажите обратный отсчет нового события.Вот как это будет выглядеть на дисплее:

dhur 2 hours left
dhur 2 minutes left (if no longer hours left)
dhur 55 seconds left (if no longer minutes left)
dhur 5 seconds ago (if count down finished and then show how many seconds ago)
dhur 9 minutes ago (if extended more then seconds, then show how many minutes ago)
asr 1 hour left (after 15 minutes later time changes to new event)

Если скрипт, который я использую, не подходит, и вы предпочитаете какой-то другой скрипт для такого рода задач, пожалуйста, поделитесь со мной.Это не обязательно должен быть скрипт jQuery, но это помогает, если это jQuery.

Это было полезно?

Решение

Я думаю, вам было бы лучше не переосмысливать эту штуку.

Уже существует действительно хороший плагин jQuery для этой функциональности (также с поддержкой i18n).

Время выполнения jQuery

Timeago - это плагин jQuery, который упрощает автоматическую поддержку обновление нечетких временных меток (например"4 минуты назад" или "около 1 дня назад" или "через 2 года")

P.S.:не забудьте установить jQuery.timeago.settings.allowFuture = true; чтобы разрешить даты в будущем


Если вам нужен какой-то "обратный вызов", вы могли бы сделать две вещи.

  1. Предполагая, что вы поддерживаете только английский (без i18n), просто используйте setInterval который каждые 20-25 секунд проверяет, является ли строка, установленная jQuery timeago, "15 минут назад", а затем делает все, что угодно
  2. Взломать Адаптируйте код плагина и подключитесь к, например, $timeago.inWords метод и делайте все, что угодно, если distanceMillis параметр равен >=900000 (15*60*1000).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top