Вопрос по HTML. Создать таймер отсчета.

Discussion in 'PHP' started by b@ron, 26 May 2010.

  1. b@ron

    b@ron Banned

    Joined:
    12 Aug 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Таймер, красного цвета, отсчет времени, скажем - 14:00
    и время начинает отсчитываться - 13:59, 13:58 и тд

    Как такое сделать?
     
  2. NeoX

    NeoX Elder - Старейшина

    Joined:
    23 Aug 2008
    Messages:
    65
    Likes Received:
    21
    Reputations:
    5
    на хтмл это нельзя сделать. О_о
     
  3. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Да Да, тебя не поняли что ты имел в виду джава скрипт.
     
  4. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    гугл рулит
    http://tods-blog.com.ua/web-development/countdown-clock/
     
  5. o4zloy

    o4zloy New Member

    Joined:
    25 May 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    На ХТМЛ такого конечно не сделать, лучше всего использовать AJAX для подобной цели.
    Передо мной стояла когда-то давно такая задача, аякса толком не знал, но нашел другой выход.

    Этот код, ставим в хтмл.
    Code:
    <!--таймер-->
    <style>div#timer{color:#FF0000;}</style>
    <script language="javascript">	
    var limit = 360; // в секундах
    function processTimer(){
      if (limit > 0) {
        setTimeout("processTimer()",1000);
        limit--;
      } else {
        location.reload(true);
      }
      var limit_div = parseInt(limit/60); // минуты
      var limit_mod = limit - limit_div*60; // секунды
      // строка с оставшимся временем
      limit_str = "&nbsp;&nbsp;";
      if (limit_div < 10) limit_str = limit_str + "0";
      limit_str = limit_str + limit_div + ":";
      if (limit_mod < 10) limit_str = limit_str + "0";
      limit_str = limit_str + limit_mod + "&nbsp;&nbsp;";      
      // вывод времени
      el_timer = document.getElementById("timer");
      if (el_timer) el_timer.innerHTML = limit_str;
    }
    processTimer();
    </script>
    <div id="timer"></div>
    Тег <div id="timer"></div>, ставим туда где нужен счетчик, в стилях шлифуем.

    Плюс скрипта: простота и мизирный обьем, ничего лишнего;
    Минус скрипта: var limit = 360; // время в секундах тут прописано статично, в результате при обновлении страницы счетчик сбрасывается, и отсчет начинается заново. Но с помощью пхп это решаемо.
     
  6. emmy

    emmy Member

    Joined:
    12 Oct 2009
    Messages:
    76
    Likes Received:
    17
    Reputations:
    8
    Code:
    <div id="timer"></div>
    <style>
    #timer { color:#FF0000; }
    </style>
    <script>
    
    (function (node, padd)
    {
        var limit  = 360;
        var format = 'Hours:Minutes:Seconds';
    
        var timer = setInterval(function ()
        {
            if (limit-- > 0)
            {
                var date = new Date(limit * 1000);
    
                node.innerHTML = format.replace(/\w+/g, function (m)
                {
                    var s = date['getUTC' + m]().toString(10);
    
                    return padd[s.length] + s;
                });
            }
            else
            {
                clearInterval(timer);
            }
        }, 1000);
    }(document.getElementById('timer'), ['00', '0', '', '', '']));
    
    </script>
    Кстати аяксом все называют то, чего сами не понимают или понимают не полностью - самое точное определение похоже =)
     
  7. o4zloy

    o4zloy New Member

    Joined:
    25 May 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Хз, как его кто понимает, я его поверхностно изучал пока, практиковать серьезно не приходилось, так, по мелочам.
    Но сам принцип подобной организации работы яваскрипта нравится, и в плане распределенных запросов(асинхронизации), и производительности.

    Вот жду хтмл5, там вродь как тож обещают нечто подобное.

    п.с. отдельное спс за упрощения скрипта=)