Autor Zpráva
donald21
Profil
Zdravím všechny,
našel jsem tedy nebo i jinde plno javascriptů, které odpočítávají čas. To je super, ale já bych potřeboval něco navíc.

Vybral jsem si tento JS:
<span id='cas'></span>
<script>
var x = new Date(2012,03,11,20,00,00);//11.3.2012 20:00:00 UTC (nie 23.10) + oprava zobrazenia podľa časového pásma (čas treba zadať v UTC)
window.setInterval(function(){window.document.getElementById('cas').innerHTML=(new Date(x-new Date())).toLocaleTimeString();},1000);
</script>

Kód mi funguje na 100 %, ale...

JS ještě moc neumím, a proto byc chtěl poprosit, aby mi kód někdo upravil tak, aby se po vypršení limitu (tzn. když bude ukazatel ukazovat: 0:00:00) odpočet skryl a stránka refreshovala (nebo přesměrovala na jinou).

Pozn. když je čas na 0:00:00 a uběhne další sekunda tak časomíra běží od 23:59:59 a je to zase celé znovu.

Hlavní otázka je: Jak stránku refreshnout nebo přesměrovat po vypršení limitu?

Děkuji za pomoc.


//EDIT: neusí to být nutně přes ten JS co jsem vložil, kdyby někdo věděl jak to udělat
Bronzi
Profil
Zkus něco takového:

<span id='cas'></span>
<script>
var x = new Date(2012,03,11,20,00,00);//11.3.2012 20:00:00 UTC (nie 23.10) + oprava zobrazenia podľa časového pásma (čas treba zadať v UTC)
var interval = window.setInterval(function(){var rozdil = x-new Date(); if(rozdil == 0){ clearInterval(interval); location.reload(true); } window.document.getElementById('cas').innerHTML=(new Date(rozdil)).toLocaleTimeString();},1000);
</script>
donald21
Profil
Podle kódu jsem pochopil co by to mělo udělat, ale neprovedlo se to. Čas se mi opět přetočil na 23:59:59 a počítá se znovu, stránka se také nenačetla znovu. I když jsem stránku refreshnul znovu ručně, tak se čas odpočítával od začátku.
Chamurappi
Profil
Reaguji na Bronziho:
if(rozdil == 0)
Šance, že se při sekundovém intervalu trefíš na milisekundu přesně, je docela malá, takže by tam mělo být menšítko.


Reaguji na donalda21:
new Date(2012,03,11,20,00,00)
To je 11. dubna. Nedoporučuji psát jednociferné měsíce s nulou, značí osmičkovou soustavu, takže 08 může být 0.
Endy
Profil *
Prosím vás,
jak mám nastavit na INPUT vynulování odpočtu? viz níže


 <body>

      <form action="sss.html" method="post" name="pocitadlo" id="odpocet" accept-charset="utf-8" class="odpoc">
   
  <font size="4">
   
<div   class="CountDown"  data-date="2015-5-27 20:15" data-notexpired="Do konce odpočtu zbývá:" data-expired="Čas vypršel!" style="
    width: 300px;
"></div>
  

  
<script>


  window.onload = function (time) {
    loadCountDowns();
}
function loadCountDowns(){
    elements = document.getElementsByClassName("CountDown");
    countDowns = new Array();                                                                    
    for (var i = 0; i < elements.length; i++) {
        countDowns[i] = new CountDown(elements[i]);
        countDowns[i].Refresh();
        setInterval("countDowns["+i+"].Refresh()", 1000);
    }
}
function CountDown(element){
    this.element = element;
    this.date = new Date(this.element.dataset.date.replace(new RegExp(/-/g), "/"));
    this.notExpiredLabel = typeof this.element.dataset.notexpired == "undefined" ? "" : this.element.dataset.notexpired;
    this.expiredLabel = typeof this.element.dataset.expired == "undefined" ? "" : this.element.dataset.expired;
    this.Refresh = function(){
        var diff = Math.round((this.date.getTime() - new Date().getTime()) / 1000);
        if(diff <= 0){
            this.element.innerHTML = "<span class='expirationLabel'>" + this.expiredLabel + "</span>"
        }
        else{
            var s = diff % 60;
            var m = (diff - s) / 60 % 60;
            s = new TimePart(s, "secs", ["sekunda", "sekundy", "sekund"]);
            m = new TimePart(m, "mins", ["minuta", "minuty", "minut"]);
            this.element.innerHTML = "<span class='expirationLabel'>" + this.notExpiredLabel + "</span><span class='countdowning'>" +  m.formatedPart + s.formatedPart + "</span>";
        }
    }
}
function TimePart(number, className, labels){
    this.number = number;
    this.twoDigitNumber = "<span class='number'>" + (this.number < 10 ? "<span class='leadingZero'>0</span>" : "") + this.number + "</span>";
    this.label = "<span class='label'>" + (this.number == 1 ? labels[0] : (this.number < 5 & this.number != 0 ? labels[1] : labels[2])) + "</span>";
    this.formatedPart = "<span class='timePart " + className + (this.number == 0 ? " zero" : "") + "'>" + this.twoDigitNumber + this.label + "</span>";    
}

</script> 

 <style>
.CountDown .leadingZero {
        display: none;
}
.CountDown .number{
        font-size: 100%;
}
.CountDown .timePart{
       
        margin: 5px 5px 0px 0px;
        float: left;
        width: 135px;
        text-align: center;
}
.CountDown .label{
        display: block;
        color: black;
}
.CountDown {
        font-family: Calibri;
        height: 100px;
}
.CountDown .timePart, .CountDown .expirationLabel{
        background: linear-gradient(to bottom, rgba(167,207,223,1) 0%,rgba(35,83,138,1) 100%);
        border-radius: 5px;
        padding: 5px;
        box-shadow: gray 3px 3px 10px;
}
.CountDown .expirationLabel{
        background: linear-gradient(to bottom, rgba(35,83,138,1) 0%,rgba(167,207,223,1) 100%);
        display: block;
        font-size: 110%;
        width: 285px;
}


</style>

</p> 





 
  <br>
 
  
 
 



<p>


<input name="vynulovat"  type="reset" onclick="loadCountDowns(0);"  value="Přeruš to!!" style="border-radius: 50%; width: 100px; height: 100px; background: rgb(203, 36, 36); /* display: inline-block */">
&nbsp;&nbsp;

</p>
</form>

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: