Witam, mam taki poblem: potrzebuję zrobić funkcję, która na początku sprawdzi czas, i załaduj odpowiednią funkcję odliczania czasu do danej godziny, gdy dojrzie do tej godziny, zacznie odliczać do innej godziny i po osiągnięciu jej, załaduje znowu pierwszą godzinę-a teraz może prościej, chodzi o coś na podobieństwo Happy Hour, czyli od godziny 11:00 do 12:35 są tańsze ceny i pokazuje licznik, jak jest przed 11, odlicza do 11, jak osiągnie 11, zmienia się na 12:35 i odlicza do niej, po osiągnięciu, znowu odlicza do 11 (czyli jakieś 22h 24m 59sek).
Mam skrypt odliczania:
Kod
<html><head>
<script type="text/javascript">

var IdNo = 0;

function time (hours,mins,secs,span) {
    
    this.id = "time" + IdNo++;
    window[this.id] = this;
    
    this.hours = hours;
    this.mins = mins;
    this.secs = secs;
    this.span = span;
    
    this.show = show;
    
}

function show() {
    var dateobj=new Date()
    var meta = new Date(2009,10,19,this.hours,this.mins,this.secs);
    var jeden_dzien = 24 * 60 * 60 * 1000;
    var jedna_godz = 60 * 60 * 1000;
    var jedna_min = 60 * 1000;
    var stoper = (meta.getTime() - dateobj.getTime());
    var ilosc_dni = stoper / jeden_dzien;
    var dni = Math.floor(ilosc_dni);

    var ilosc_godz = (ilosc_dni -dni)*24;
    var godz2 = Math.floor(ilosc_godz);

    var ilosc_min = (ilosc_godz -godz2)*60;
    var min2 = Math.floor(ilosc_min);

    var ilosc_sek = (ilosc_min - min2)*60;
    var sek2 = Math.floor(ilosc_sek);
    document.getElementById( this.span ).innerHTML = "Time left: " +
    (( godz2 < 10 ) ? ( "0" + godz2 ) : godz2) + ":" +
    (( min2 < 10 ) ? ( "0" + min2 ) : min2) + ":" +
    (( sek2 < 10 ) ? ( "0" + sek2 ) : sek2);
    setTimeout("window."+this.id+".show()",1000);
}


function load() {
    
    var timer1 = new time(09,18,00,"tm1");
    
    timer1.show();
}
</script>
</head>
<body onload="load()">
<span id="tm1"></span><br /><br />
</body>
</html>

I fajnie działa, ale nie wiem, jak zrobić, żeby zmieniał potem dane funkcji (robiłem sprawdzenie, jeśli godz i min i sek są równe zero, to załaduj na nowo:
Kod
if(sek2==0 && min2==0 && godz2==0){
        var timer1 = new time(09,19,00,"tm1");
        timer1.show();
    }

Ale pokazuje tylko na chwile z tymi danymi i znowu leci ze starymi-jakieś pomysły??