Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] Timer zatrzymuje się na 0.1
Dominator
post
Post #1





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

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


Jak w temacie, dlaczego?

  1. <html>
  2. <head>
  3. <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function()
  6. {
  7. var milisec=0;
  8. var seconds=0;
  9. function display()
  10. {
  11. if (milisec>=9)
  12. {
  13. milisec=0;
  14. seconds+=1;
  15. }
  16. else
  17. {
  18. milisec+=1;
  19. setInterval("display()",100);
  20. $("div[id='timer']").text(seconds+"."+milisec);
  21. }
  22. }
  23. display();
  24. });
  25. </script>
  26. </head>
  27. <body>
  28. <div id="timer"></div>
  29. </body>
  30. </html>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
lukasz1985
post
Post #2





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

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


  1. <!--
  2. To change this template, choose Tools | Templates
  3. and open the template in the editor.
  4. -->
  5. <!DOCTYPE html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. </head>
  9. <body>
  10. <div>TODO write content</div>
  11.  
  12.  
  13. <script type="text/javascript" >
  14.  
  15. window.onload = function()
  16. {
  17. var time = 0;
  18. function display(){
  19. time += 0.1
  20.  
  21. seconds = Math.floor(time );
  22. milisec = Math.floor(( time *10 ) % 10 );
  23. document.getElementById("timer").innerHTML = seconds+"."+milisec;
  24. }
  25.  
  26. setInterval(display, 100);
  27. };
  28. </script>
  29.  
  30. <div id="timer">
  31.  
  32. </div>
  33. </body>
  34. </html>
Go to the top of the page
+Quote Post
kamil4u
post
Post #3





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Tobie chyba chodzi o funkcję setTimeout a nie setInterval.

Chociaż powinieneś przerobić tak kod, żeby skorzystać z setInterval. Jak? Zajrzyj do dokumentacji( szukaj pod "MDC" ). A jeżeli sobie nie poradzisz to zgłoś się ponownie i napisz czy chcesz to zrozumieć czy potrzebujesz gotowca. Wtedy opiszę wszystko dokładnie(lub mniej przy gotowcu ) (IMG:style_emoticons/default/smile.gif)

Pozdrawiam

--edit--
O widzisz - już dostałeś gotowca (IMG:style_emoticons/default/smile.gif)

--edit2--
@lukasz1985:
Jeszcze przyczepię się do Twojego kodu.
W kodzie masz:
- document.getElementById("timer")

Ja bym użył zmiennej globalnej, gdzie zapisałbym referencję do tego elementu. Tak jak masz teraz to niepotrzebne marnowanie czasu na wyszukiwanie tego elementu co bardzo krótki czas. I tak wiem, że to prosty przykład i pewnie się bardzo nie starałeś, ale piszę to po to, że może w przyszłości będziesz pisał coś większego to wtedy warto robić takie optymalizacje (IMG:style_emoticons/default/smile.gif)

Kiedyś można było wyczuć różnicę gołym okiem, teraz są lepsze przeglądarki i komputery, ale takie dobre nawyki dobrze mieć.

Ten post edytował kamil4u 19.03.2013, 17:49:29
Go to the top of the page
+Quote Post
Dominator
post
Post #4





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

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


Dziękuję za pomoc, opracowałem własne i znacznie krótsze narzędzie, a działa tak samo (IMG:style_emoticons/default/smile.gif)

Jakbyście mi mogli powiedzieć jeszcze - jaka funkcja zaokrągla liczby? (w php jest round)
Go to the top of the page
+Quote Post
kamil4u
post
Post #5





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
Dziękuję za pomoc, opracowałem własne i znacznie krótsze narzędzie, a działa tak samo smile.gif

Pochwal się (IMG:style_emoticons/default/smile.gif)

Cytat
Jakbyście mi mogli powiedzieć jeszcze - jaka funkcja zaokrągla liczby? (w php jest round)

Google -> "js round" -> http://www.w3schools.com/jsref/jsref_round.asp
Go to the top of the page
+Quote Post
Dominator
post
Post #6





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

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


  1. <html>
  2. <head>
  3. <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function()
  6. {
  7. var system =
  8. {
  9. round: function(n, k)
  10. {
  11. var factor = Math.pow(10, k+1),
  12. n = Math.round(Math.round(n*factor)/10);
  13. return n/(factor/10);
  14. },
  15. initTimer: function()
  16. {
  17. window.setInterval(function()
  18. {
  19. var a = $("div[id='timer']").text(),
  20. b = "0.1",
  21. c = system.round(Number(a) + Number(b), 1);
  22. $("div[id='timer']").text(c);
  23. }, 100);
  24. }
  25. }
  26. system.initTimer();
  27. });
  28. </script>
  29. </head>
  30. <body>
  31. <div id="timer">0.1</div>
  32. </body>
  33. </html>


Co o tym sądzicie?
Go to the top of the page
+Quote Post
kamil4u
post
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Nie powiedziałbym, że jest to lesze (IMG:style_emoticons/default/smile.gif)

Krótkie uwagi( trudno to nazwać błędami ):
-
Kod
b = "0.1",
operuj na liczbach nie na tekstach, czyli zamieniaj string to int, a nie int to string



-
Kod
$("div[id='timer']")
jQuery ma dostęp do id za pomocą $('#id')
-
Kod
Math.round(Math.round(n*factor)/10);


Po co zewnętrze Math.round?

- jak dla mnie kod jest brzydki - w sensie wizualnym. ale to moje prywatne odczucie - z kilka sekund zajęło mi ogarnięcie o co chodzi, gdzie np. przy kodzie ~lukasz1985 od razu widziałem co gdzie i z czym (IMG:style_emoticons/default/smile.gif)

- funkcję round zastąp tym kodem: https://developer.mozilla.org/en-US/docs/Ja...ects/Math/round -> "Example: Decimal rounding"


Generalnie dobrze, że próbujesz pisać coś sam, a nie jak większość kopiujowanie rozwiązania. Ja też próbowałem wszystko zawsze sam pisać i właśnie dzięki temu mogę dziś powiedzieć, że umiem JS. Jesteś na dobrej drodze. Powodzenia!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 10:42