За последние 24 часа нас посетили 17885 программистов и 1648 роботов. Сейчас ищут 994 программиста ...

несколько таймеров с обратным отсчетом на одной странице

Тема в разделе "JavaScript и AJAX", создана пользователем shurik330, 2 дек 2011.

  1. shurik330

    shurik330 Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    18
    Симпатии:
    0
    Здравствуйте.
    Подскажите, как можно использовать несколько таймеров на одной странице?
    Скрипт таймера - скачен.
    Один таймер работает, а если больше, то - нет!
    Если можно, то с примерами.
    Заранее спасибо.
     
  2. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Да, если можно, то с примером скачанного скрипта, телепатией не страдаем...
     
  3. shurik330

    shurik330 Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    18
    Симпатии:
    0
    Вот как я пытался сделать
    index.php
    PHP:
    1.  
    2. <script type="text/javascript" src="countdown.js"></script>
    3.  
    4. <script>// <![CDATA[
    5. idd = "<?php echo $row["id"];?>";
    6. TargetDate = "12/20/2011 11:59 PM";
    7. BackColor = "#CC0000";
    8. ForeColor = "white";
    9. CountActive = true;
    10. CountStepper = -1;
    11. LeadingZero = true;
    12. DisplayFormat = "%%H%% ч. %%M%% мин. и %%S%% сек.";
    13. FinishMessage = "Сожалеем, регистрация на тренинг со скидкой закончилась!";
    14. // ]]></script>
    15.  
    16. <form name="tesss">
    17. <?php
    18.     include_once('../libs/connect.php');
    19.     $result = mysql_query("SELECT * FROM table");
    20.     $row = mysql_fetch_array($result); 
    21.     do {
    22.          echo "<span id=tim".$row["id"]. " style=background-color:#CC0000; color:white; font-size:200%;><b>01</b> дн. <b>04</b> ч. <b>18</b> мин. и <b>15</b> сек.</span><br>";
    23.          ?>
    24.         <input type=hidden name=counter value="tim<?php echo htmlspecialchars($row['id']); ?>">
    25.         <?php  
    26.     }
    27.     while ($row = mysql_fetch_array($result));
    28. ?>
    29. </form>
    30.  
    countdown.js
    [js]
    function calcage(secs, num1, num2) {
    s = ((Math.floor(secs/num1))%num2).toString();
    if (LeadingZero && s.length < 2)
    s = "0" + s;
    return "<b>" + s + "</b>";
    }

    function CountBack(secs) {

    if (secs < 0) {
    document.getElementById('idd').innerHTML = FinishMessage;
    return;
    }
    DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
    DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
    DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
    DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));

    document.getElementById('idd').innerHTML = DisplayStr;
    if (CountActive)
    setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
    }

    function putspan(backcolor, forecolor) {

    document.write("<span id='idd' style='background-color:" + backcolor +
    "; color:" + forecolor + "'></span>");
    }

    if (typeof(BackColor)=="undefined")
    BackColor = "white";
    if (typeof(ForeColor)=="undefined")
    ForeColor= "black";
    if (typeof(TargetDate)=="undefined")
    TargetDate = "12/31/2020 5:00 AM";
    if (typeof(DisplayFormat)=="undefined")
    DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
    if (typeof(CountActive)=="undefined")
    CountActive = true;
    if (typeof(FinishMessage)=="undefined")
    FinishMessage = "";
    if (typeof(CountStepper)!="number")
    CountStepper = -1;
    if (typeof(LeadingZero)=="undefined")
    LeadingZero = true;


    CountStepper = Math.ceil(CountStepper);
    if (CountStepper == 0)
    CountActive = false;
    var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
    putspan(BackColor, ForeColor);
    var dthen = new Date(TargetDate);
    var dnow = new Date();
    if(CountStepper>0)
    ddiff = new Date(dnow-dthen);
    else
    ddiff = new Date(dthen-dnow);
    gsecs = Math.floor(ddiff.valueOf()/1000);
    CountBack(gsecs);
    [/js]