Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Niewłaściwe zachowanie timera
Dominator
post 7.04.2012, 14:54:40
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Witajcie

Przejdę od razu do rzeczy, a mianowicie mam sobie tzw. 'timer', który po minięciu 4.0 sekund ma coś robić, jednakże on coś robi po 4.4 sekundy - dlaczego ? Co tu jest źle ?

  1. var czas = 0,
  2. minelo = '0.0';
  3. window.setInterval(function()
  4. {
  5. czas += 100;
  6. minelo = Math.floor(czas / 100) / 10;
  7. if(Math.round(minelo) == minelo)
  8. {
  9. minelo += '.0';
  10. }
  11. if(Math.round(minelo) > 4.0)
  12. {
  13. stop()
  14. }
  15. else
  16. {
  17. document.write(minelo + "<br>");
  18. }
  19. }, 100);


Odświeżam.

F5
Go to the top of the page
+Quote Post
tolomei
post 7.04.2012, 15:28:53
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Witaj.
Problem jest w tej linijce:

Kod
Math.round(minelo) > 4.0


bo

Kod
Math.round(4.0) == 4
Math.round(4.1) == 4
Math.round(4.2) == 4
Math.round(4.3) == 4
Math.round(4.4) == 4


Dodatkowo użyj sobie clearInterval() bo to leci w nieskończoność.

Pozdrawiam smile.gif


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
Dominator
post 7.04.2012, 15:29:56
Post #3





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Zamieniłem to na


  1. if(Math.round(minelo) == 4.0)



I zatrzymuje się na 3.4
Go to the top of the page
+Quote Post
tolomei
post 7.04.2012, 15:47:31
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


heh no dlatego że:

Kod
Math.round(3.5) == 4
Math.round(3.6) == 4
Math.round(3.7) == 4
Math.round(3.8) == 4
Math.round(3.9) == 4


smile.gif

Zmień warunek na taki:

Kod
if(parseFloat(minelo) > 4)


Pozdro


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
Dominator
post 7.04.2012, 23:01:43
Post #5





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Dziękuję bardzo. Kod działa smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 08:44