Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Countdown
Forum PHP.pl > Forum > Po stronie przeglądarki
My4tic
Witam,

Mam problem z takim kodem:

  1. <script type="text/javascript">
  2. function countdown(dd, id){
  3.  
  4. idd = id;
  5. sek = dd;
  6.  
  7. godziny=Math.floor(dd/3600);
  8. remain=Math.floor(dd-(godziny*3600));
  9. minuty=Math.floor(remain/60);
  10. sekundy=Math.floor(dd-(minuty*60+godziny*3600));
  11.  
  12. if (sekundy<10) sekundy= "0"+sekundy;
  13. if (minuty<10) minuty= "0"+minuty;
  14. if (godziny<10) godziny= "0"+godziny;
  15.  
  16. document.getElementById(idd).innerHTML=godziny+":"+minuty+":"+sekundy;
  17.  
  18. if (dd==0) {
  19. document.getElementById(idd).innerHTML="---";
  20. return
  21. }
  22.  
  23. sek = dd - 1;
  24. setTimeout("countdown(sek, idd)", 1000);
  25. }
  26.  
  27. dd - czas ktory ma odliczyc w sek
  28. id - id pola ktore ma być modyfikowane


...wszystko działa ok do momentu kiedy chce uruchomić funkcje dla większej ilości pól na stronie.
Powiedzmy ze mam dwa divy o id 1 i 2. Teraz chce aby timer odliczał dwa rozne czasy w tych dwoch polach. Ta funkcja którą mam sobie z tym nie radzi.

Pzdr
SHiP
Musisz zdefioniować id kazdego timera i w zaleznosci od niego operowac na odpowiednim obiekcie
Kiedys napisalem coś takiego...

Kod
var Timeout=Array();

function timer(id,time,endcode)
{

    window.clearTimeout(Timeout['timer_'+id]);

    time--;
    var myTime = time;

    var hours = Math.floor(time/3600);
    time-=hours*3600;
    var min = Math.floor(time/60);
    time-=min*60;

    if(hours<10) hours='0'+hours;
    if(min<10) min='0'+min;

    if(myTime==0) {document.getElementById(id).innerHTML='';  eval(endcode); return 0; }
        else document.getElementById(id).innerHTML=hours+':'+min+':'+time;

  Timeout['timer_'+id] = window.setTimeout('timer("'+id+'",'+myTime+',"'+endcode+'")', 1000);
}


Przykald uzycia

Kod
var Timeout=Array();

function timer(id,time,endcode)
{

    window.clearTimeout(Timeout['timer_'+id]);

    time--;
    var myTime = time;

    var hours = Math.floor(time/3600);
    time-=hours*3600;
    var min = Math.floor(time/60);
    time-=min*60;

    if(hours<10) hours='0'+hours;
    if(min<10) min='0'+min;

    if(myTime==0) {document.getElementById(id).innerHTML='';  eval(endcode); return 0; }
        else document.getElementById(id).innerHTML=hours+':'+min+':'+time;

  Timeout['timer_'+id] = window.setTimeout('timer("'+id+'",'+myTime+',"'+endcode+'")', 1000);
}
</script>

<div id="one"></div>
<div id="two"></div>

<script type="text/javascript">

timer("one",60,"alert('Minuta minęła')");
timer("two",10,"alert('10 sek. minęło')");
</script>


Zapomniałem o skladni ;] Pierwszy parametr - id, drugi - czas w sekundach - trzeci kod jaki zostanie wykonany po uplywie tego czasu
My4tic
Dzięki za pomoc. Wszystko śmiga.

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.