Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Skrytp odliczający czas
Forum PHP.pl > Forum > Przedszkole
PROGer
Witam,
mam taki oto skrypt odliczajacy czas

  1. <span id="odliczanie"></span>
  2. <script type="text/javascript">
  3. k=+new Date();
  4. (function(){sec=(k-new Date())/1000;
  5. document.getElementById('odliczanie').innerHTML=~~(sec/60)%60+' minut '+~~sec%60+' sekund';
  6. setTimeout(arguments.callee,1000)})()
  7. </script>


Problem w tym że odlicza go w tył od 0 minut 00 sekund
Chciałbym natomiast aby zegar ustawiony był poczatkowo na czas 15 minut.
Z JavaScript nie mam dużo do czynienia stąd też moja prośba o pomoc.
mar1aczi
Linię 3 zastap tymi dwoma
  1. var k=new Date();
  2. k.setMinutes(k.getMinutes() + 15);
PROGer
Działa w 99% bardzo dziekuję.
Mam taką sytuację, że jak odświeżę stronę to licznik rozpoczyna odliczanie do 15 minut 00 sekund a po sekundzie przeskakuje od razu na 14 minut 58 sekund. Dalej idzie już ładnie w dół ... jak to poprawić?
mar1aczi
Możliwe, że strona ładuje Ci się dłużej. Spróbuj dać ten javascript na sam dół przed samym </body>.
PROGer
Nie pomogło
No nic ... najwyżej tak to już zostawię
Dzięki jeszcze raz!
Randallmaster
Temat: JavaScriptOdliczanie czasu

Może pomoże smile.gif
PROGer
Jeszcze jedna mała rzecz.
Zegar startując na stronie zaczyna się od 15:0
Później lecąc w dół mamy
14:11
14:10
14:9
14:8

Można ustawić format aby zapis wyglądał tak?
14:11
14:10
14:09
14:08
?

Identycznie z minutami
mar1aczi
Linię 5 Twojego kodu zastąp
Kod
var pre_sec = (sec%60 < 10) ? '0' :'';
document.getElementById('odliczanie').innerHTML=~~(sec/60)%60+' minut '+ pre_sec + ~~sec%60 +' sekund';

Analogicznie zrobisz to dla minut.
PROGer
Ok działa z tym że przy starcie mam 015:00 po czym po upływie sekundy już mam poprawnie 14:59
mar1aczi
Pokaż to co masz, poprawimy smile.gif
PROGer
  1. <script type="text/javascript">
  2. var k=new Date();
  3. k.setMinutes(k.getMinutes() + 15);
  4. (function(){
  5. sec=(k-new Date())/1000;
  6. var pre_min = (sec%60 < 10) ? '0' :'';
  7. var pre_sec = (sec%60 < 10) ? '0' :'';
  8. document.getElementById('odliczanie').innerHTML='Czas do końca sesji: '+ pre_min +~~(sec/60)%60+' : '+ pre_sec + ~~sec%60+' ';
  9. setTimeout(arguments.callee,1000)
  10. })()
  11. </script>
mar1aczi
Minuty do wyświetlenia są obliczane jako "(sec/60)%60" a Ty zrobiłeś... "sec%60" i stąd błąd.
Twoje pre_min winno wygladać tak:
Kod
var pre_min = ((sec/60)%60 < 10) ? '0' :'';


Podpowiadałem analogicznie, nie identycznie wink.gif

Tutaj takie ładnijesze rozwiązanie wink.gif
Kod

    <script type="text/javascript">
    Number.prototype.pad = function(size) {
    var s = String(this);
        while (s.length < (size || 2)) {s = "0" + s;}
    return s;
    };
    
    var k=new Date();
    k.setMinutes(k.getMinutes() + 15);
    (function(){sec=(k-new Date())/1000;
    document.getElementById('odliczanie').innerHTML=(~~(sec/60)%60).pad()+' minut '+ (~~sec%60).pad() +' sekund';
    setTimeout(arguments.callee,1000)})()
    </script>
PROGer
Bardzo, bardzo dziękuję za pomoc smile.gif
Randallmaster
A tak apropo udoskonalenia twojego kodu smile.gif Włącz stronę gdzie będzie ci odliczało, i jak rozpocznie odliczać przejdź na inną zakładkę na 10 sec i powróć smile.gif I wtedy zobacz czy zgadza ci się czas odliczania.
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.