Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2014, 19:52
Новичок на форуме
Отправить личное сообщение для jet2 Посмотреть профиль Найти все сообщения от jet2
 
Регистрация: 17.12.2014
Сообщений: 3

Обратный отсчет
День Добрый!

Есть скрипт отсчета от заданной даты

<script type="text/javascript">
function updateCountdownClock(endDate) {
    var time = new Date();
    var endtime = new Date(endDate);
    var timemils = time.getTime();
    var endtimemils = endtime.getTime();
    if (endtimemils < timemils) {
        document.getElementById('premiertimer').innerHTML = '';
        return
    }
    var daysleft = Math.floor((endtimemils - timemils) / 1000 / 60 / 60 / 24);
    var d = daysleft - Math.floor(daysleft / 10) * 10;
    var daysleftFinal;
    var text_day;
    if (d == 1 && daysleft != 11) text_day = "день";
    else if (d > 1 && d < 5 && (daysleft < 10 || daysleft > 20)) text_day = "дня";
    else if (d >= 0) text_day = "дней";
    if (daysleft > 0) daysleftFinal = ' • ещё ' + daysleft + ' ' + text_day + '';
    else daysleftFinal = ' • сегодня';
    document.getElementById('premiertimer').innerHTML = (daysleftFinal);
    window.setTimeout("updateCountdownClock('" + endDate + "')", 1000)
}
</script>


<div id="premiertimer" class="timer"><script type="text/javascript" > updateCountdownClock ("17 Dec 2014 23:59:59")</script></div>


Подскажите пожалуйста, если не сложно. Как можно вывести его на одной странице несколько раз.

И есть ли вариант, изменить способ ввода даты в место 17 Dec 2014 =>17.12.2014

Всем спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2014, 21:52
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

<!doctype html>
  <html lang="ru">
    <head>
      <meta charset="utf-8">
      <script type="text/javascript">

function updateCountdownClock(element, endDate) {
    var text;
    var now = +new Date();
    var endtime = new Date();
    var match = endDate.match(/(\d{1,2})\.(\d{1,2})\.(\d{4})\s+(?:(\d{1,2})\:(\d{1,2})(?:\:(\d{1,2})))/);
    endtime.setDate(match[1]);
    endtime.setMonth(match[2] - 1);
    endtime.setFullYear(match[3]);
    endtime.setHours(match[4]);
    endtime.setMinutes(match[5]);
    endtime.setSeconds(match[6]);
    endtime = +endtime;

    var diffDays = (((((endtime/84375) >> 10) | 0) - (((now/84375) >> 10) | 0)));
    if (diffDays < 0) {
        element.innerHTML = 'Уже было';
        return;
    }

    if(diffDays%10 == 1)
      text = "Остался " + diffDays + " день";
    else if(diffDays%10 > 1 && diffDays%10 < 5 && (diffDays < 10 || diffDays > 20))
      text = "Ещё " + diffDays + " дня";
    else if(diffDays > 0)
      text = "Осталось " + diffDays + " дней";
    else
      text = "Сегодня";

    element.innerHTML = text;
}

window.onload = function() {
  var elements = document.getElementsByTagName('*');
  var timers = [];

  for(var i = 0, length = elements.length, timer, rel; i < length; i++) {
    timer = elements[i];
    rel = timer.getAttribute('rel') || '';
    if(/^timer/.test(rel)) {
      timers.push(timer);
    }
  }

  setTimeout(function() {
    for(var i = 0, length = timers.length; i < length; i++)
      updateCountdownClock(timers[i], timers[i].getAttribute('rel'));
  }, 500);
};
      </script>
    </head>
    <body>
      <div>Когда будет 17 декабря 2015? <span rel="timer[17.12.2015 12:00:00]"></span></div>
      <div>Когда наступит новый год? <span rel="timer[01.01.2015 00:00:00]"></span></div>
      <div>Когда будет 1 декабря 2014? <span rel="timer[1.12.2014 12:00:00]"></span></div>
      <div>Когда будет день рождения? <span rel="timer[02.03.2015 08:20:00]"></span></div>
    </body>
</html>

Последний раз редактировалось Malleys, 30.12.2014 в 17:46.
Ответить с цитированием
  #3 (permalink)  
Старый 17.12.2014, 23:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Malleys,
а run добавить в тег html
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2014, 09:21
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 456

jet2, Malleys, а зачем обновляете данные каждую секунду? Обновляйте с начала нового дня:
x = new Date();
x.setHours(24,0,0,0);
alert(x);
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2014, 16:46
Новичок на форуме
Отправить личное сообщение для jet2 Посмотреть профиль Найти все сообщения от jet2
 
Регистрация: 17.12.2014
Сообщений: 3

Огромное спасибо) То что нужно.
Но есть одна проблемка. Если страница отдается через Ajax, то данные не выводятся. Как можно это исправить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратный отсчет времени drmodjo Общие вопросы Javascript 0 12.12.2014 17:04
Обратный отсчет до даты с учетом часовых зон royksopp Flash 0 25.09.2013 18:25
jQuery Timer - обратный отсчет времени в 10 минут adax jQuery 1 01.11.2011 14:54
Обратный отсчет времени tenorica Общие вопросы Javascript 2 19.04.2011 23:30
Многократный обратный отсчет sultan.khayrulin Общие вопросы Javascript 1 30.05.2010 22:41