Autor Zpráva
Metronaut
Profil
Zdravím.
Mám jednoduchou php aukci, ale řek jsem si, že web chci trochu rozpohybovat atak jsem zvolil javascript, aby mi čas jednotlivých aukcí plynule ubíhal, ale narazil jsem na jeden problém. A to na takový, že javascript funkci nemůžu použít na více aukcích najednou, nejlíp to ukáže následující příklad. Při spuštění stránky mi ubíhá jen poslední čas a ubíhá po 3 sekundách.
Čím to je, popřípadě jak tento kód upravit?
Předem díky za Vaše odpovědi.
<html>
<head>
<title>Test</title>
<script type="text/javascript">

var _countDowncontainer=0;
var _currentSeconds=0;

function ActivateCountDown(strContainerID, initialValue) {
    _countDowncontainer = document.getElementById(strContainerID);
    
    if (!_countDowncontainer) {
        alert("count down error: container does not exist: "+strContainerID+
            "\nmake sure html element with this ID exists");
        return;
    }
    
    SetCountdownText(initialValue);
    window.setTimeout("CountDownTick()", 1000);
}

function CountDownTick() {
    if (_currentSeconds <= 0) {
        alert("your time has expired!");
        return;
    }
    
    SetCountdownText(_currentSeconds-1);
    window.setTimeout("CountDownTick()", 1000);
}

function SetCountdownText(seconds) {
    //store:
    _currentSeconds = seconds;
    
    //get minutes:
    var minutes=parseInt(seconds/60);
    
    //shrink:
    seconds = (seconds%60);
    
    //get hours:
    var hours=parseInt(minutes/60);
    
    //shrink:
    minutes = (minutes%60);
    
    //build text:
    var strText = AddZero(hours) + ":" + AddZero(minutes) + ":" + AddZero(seconds);
    
    //apply:
    _countDowncontainer.innerHTML = strText;
}

function AddZero(num) {
    return ((num >= 0)&&(num < 10))?"0"+num:num+"";
}
</script>

</head>
<body>
<?php
 $cas1    = 55544;
 $cas1id  = 1;
 $cas2    = 123465;
 $cas2id  = 2;
 $cas3    = 4545;
 $cas3id  = 3;
?>

Cas1: <span id="<? echo $cas1id;?>"><script type="text/javascript">ActivateCountDown("<? echo $cas1id;?>", <? echo $cas1;?>);</script></span><br />
Cas2: <span id="<? echo $cas2id;?>"><script type="text/javascript">ActivateCountDown("<? echo $cas2id;?>", <? echo $cas2;?>);</script></span><br />
Cas3: <span id="<? echo $cas3id;?>"><script type="text/javascript">ActivateCountDown("<? echo $cas3id;?>", <? echo $cas3;?>);</script></span>

</body>
</html>
_es
Profil
Metronaut:
Celý ten algoritmus je v princípe zle.
Po čase bude určite dochádzať k oneskoreniu časovania.
Treba to spraviť takto:
Server vyšle svoj aktuálny čas v UTC (ts) a čas v UTC, ku ktorému sa bude odpočítavať (t).
Klient si vyráta rozdiel medzi svojim aktuálnym časom v UTC (tk) a časom servera (r = tk - ts) a bude stále zobrazovať rozdiel ( tk - t + r ).
Riešilo sa to trebárs tu - bez aktuálneho času servera.
Metronaut
Profil
Zrovna tohle jsem potřeboval, díky za odpověď :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0