Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stoper.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
fish2000
Witam, mam problem ze stoperem, ponieważ nie chodzi "jak w zegarku", różnica między nim a zegarkiem wynosi około 9s na 1 minutę. JS nie ogarniam, dopiero się uczę, i nie wiem czy są jakieś efektywniejsze metody, a może tylko ja coś schrzaniłem i nie działa.

  1. <script type="text/javascript">
  2. var min=0;
  3. var sek=0;
  4. var ms=0;
  5. var ms2=0;
  6.  
  7. function stoper() {
  8. ms2++;
  9. if(ms2>=10){
  10. ms2=0;
  11. ms++;
  12. if(ms>=10){
  13. ms=0;
  14. sek++;
  15. if(sek>=60){
  16. sek=0;
  17. min++;
  18. }
  19. }
  20. }
  21. document.form.pole.value=min+":"+sek+"."+ms+ms2;
  22. }
  23. setInterval(stoper,10);
  24. <form name="form">
  25. <input type="text" name="pole" size="10">
  26. </form>
  27.  


W każdym razie potrzebna mi jest dokładność do 0.01s.

erix
Cytat
różnica między nim a zegarkiem wynosi około 9s na 1 minutę

Którym zegarkiem? Systemowym?
fish2000
Cytat(erix @ 28.12.2009, 12:02:50 ) *
Którym zegarkiem? Systemowym?

Sprawdzałem w zegarku na stoperze. Nie wiem, może skrypt traci prędkość na instrukcjach warunkowych czy coś, dziwna sprawa ;/
erix
Na jakiej przeglądarce sprawdzasz?

Spróbuj najpierw na innej, potem ew. bez wyświetlania zawartości kroku.
fish2000
Cytat(erix @ 28.12.2009, 17:55:16 ) *
Na jakiej przeglądarce sprawdzasz?

Spróbuj najpierw na innej, potem ew. bez wyświetlania zawartości kroku.

Na każdej przeglądarce inna wartość, na operze ok 9s na chrome 5s na ff 20s.

Ale już sobie jako tako poradziłem, podzieliłem skrypt na 2 funkcję, jedna liczy ms a druga s i m, teraz na 2 minutach mam różnicę około 1s, więc da się przeżyć tongue.gif

erix
Bo wartość zależy od silnika przeglądarki.

Podejrzewam, że gdybyś nie wyświetlał wyniku odliczania na bieżąco, byłoby wtedy w miarę dokładnie.
zegarek84
Cytat(fish2000 @ 28.12.2009, 18:46:22 ) *
Na każdej przeglądarce inna wartość, na operze ok 9s na chrome 5s na ff 20s.

Ale już sobie jako tako poradziłem, podzieliłem skrypt na 2 funkcję, jedna liczy ms a druga s i m, teraz na 2 minutach mam różnicę około 1s, więc da się przeżyć tongue.gif

tak jak wspomniał Erix - lecz to wartość opóźnień związanych z szybkością liczenia, dlatego za każdym razem odwołuj się do uniwersalnego wzorca jakim jest zegarek systemowy winksmiley.jpg - tu masz rozwiązanie:


  1. </HEAD>
  2. <form name="form">
  3. <input type="text" name="pole" size="10">
  4. </form>
  5. var $timerID = null , $start = null, $pole=null;
  6. function wyswietlCzas()
  7. {
  8. var $czas = new Date((new Date()).getTime() - $start),
  9. $godziny = $czas.getUTCHours(),
  10. $minuty = $czas.getUTCMinutes(),
  11. $sekundy = $czas.getUTCSeconds(),
  12. $milisekundy = $czas.getUTCMilliseconds(),
  13. $czas = [$godziny, ':', ($minuty<10)?'0'.concat($minuty):$minuty, ':', ($sekundy<10)?'0'.concat($sekundy):$sekundy, '.',($milisekundy<100)?'0'.concat(($milisekundy<10)?'0'.concat($milisekundy):$milisekundy):$milisekundy].join('');
  14. $pole.value = $czas;
  15. $timerID = setTimeout(wyswietlCzas,10);
  16. }
  17. function(){
  18. $pole=document.form.pole;
  19. $start=(new Date()).getTime();
  20. wyswietlCzas();
  21. }()
  22. </BODY>
  23. </HTML>



a oprócz tego jeszcze link do podobnego tematu winksmiley.jpg - może Ci się przyda kiedyś też:

[Java][PHP]Zegarek
kefirek
[JAVASCRIPT] pobierz, plaintext
  1. <html>
  2. <head>
  3. <script src="http://code.jquery.com/jquery-latest.js"></script>
  4. <script type="text/javascript">
  5.  
  6. var start = 0;
  7.  
  8. $(document).ready(function(){
  9. stoper();
  10. setInterval(stoper,1000);
  11. });
  12.  
  13. function stoper()
  14. {
  15. godzin = Math.floor(start/3600);
  16. minut = Math.floor(start/60)%60;
  17. sekund = start%60;
  18. $('#stoper').html('Godzin ' + godzin + ' Minut ' + minut + ' Sekund ' + sekund);
  19. start++;
  20. }
  21.  
  22.  
  23.  
  24. </script>
  25. </head>
  26. <body>
  27. <div id="stoper">
  28.  
  29. </div>
  30.  
  31. </body>
  32. </html>
[JAVASCRIPT] pobierz, plaintext
erix
~kefirek, czy Ty idąc do WC zamawiasz całą partię z fabryki papieru, czy idziesz tylko z rolką? Po kiego grzyba tu jQuery?
fish2000
zegarek84 dzięki za skrypt, działa idealnie smile.gif

kefirek tam nie ma ms.




Dziękuję wszystkim za pomoc, można zamknąć.

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.