Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Odliczanie czasu
mazyl
post
Post #1





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


Witam!

Znalazłem gdzieś na necie mniej więcej taki skrypcik
  1. <script type="text/javascript" >
  2. var ile =<?=$pozostalo?>;
  3. function liczCzas() {
  4.  
  5. ile;
  6.  
  7. var godzin = Math.floor(ile / (60 * 60));
  8. var minut = Math.floor((ile-godzin*60) / 60);
  9. var sekund = Math.floor(ile - godzin*60*60 - minut*60);
  10.  
  11. if (ile > 0) {
  12. document.getElementById(time).innerHTML = Pozostalo: +godzin+:+minut+:+sekund+’’;
  13. } else {
  14. document.getElementById(time).innerHTML = Zakończone;
  15.  
  16. }
  17. }
  18. var animeInt;
  19. clearInterval(animeInt);
  20. animeInt = setInterval(liczCzas(), 1000);
  21. </script><div id='time'></div>


przerobiłem wg własnych potrzeb lecz niestety nie działa.
czy mógłby mi ktoś pomóc i poprawić znalezione błędy ?
z góry dziękuje.
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Patrz moja sygnatura
Go to the top of the page
+Quote Post
mazyl
post
Post #3





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


konsola błędów pokazała mi :

  1. Syntax error at line 5 while loading: unexpected character: U+2013



niestety nie znam sie na JS i nie wiem jak to naprawić.


Go to the top of the page
+Quote Post
lobopol
post
Post #4





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


ile–-; daj
Go to the top of the page
+Quote Post
mazyl
post
Post #5





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


dalej jest ten sam błąd.
Go to the top of the page
+Quote Post
prowseed
post
Post #6





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


skopiowales, czy sam dopisales minus?

//EDIT
w ogole usun ten dziwny znaczek co tam jest i recznie dopisz minusy
Przytrzymaj lewy ALT, wpisz na klawiaturze numerycznej 045 i porownaj z tym minusem, co tam sie swieci na gorze u Ciebie.
Od razu w 12 i 14 popraw apostrofy

http://www.fileformat.info/info/unicode/char/2013/index.htm - to Twój minus

Ten post edytował prowseed 11.03.2012, 14:16:42
Go to the top of the page
+Quote Post
mazyl
post
Post #7





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


zrobiłem tak:

  1. <script type="text/javascript" >
  2. var ile =<?=$pozostalo?>;
  3. function liczCzas() {
  4.  
  5. ile--;
  6.  
  7. var godzin = Math.floor(ile / (60 * 60));
  8. var minut = Math.floor((ile-godzin*60) / 60);
  9. var sekund = Math.floor(ile - godzin*60*60 - minut*60);
  10.  
  11. if (ile > 0) {
  12. document.getElementById('time').innerHTML = 'Pozostalo: '+godzin+' : '+minut+' : '+sekund+'';
  13. } else {
  14. document.getElementById('time').innerHTML = 'Zakończone';
  15. <?php
  16. mysql_query("update gildia set ratusz = ratusz +1 where id = ".$oGracz['gildia']." limit 1");
  17. ?>
  18. }
  19. }
  20. var animeInt;
  21. clearInterval(animeInt);
  22. animeInt = setInterval(liczCzas(), 1000);
  23. </script><div id='time'></div>

teraz wyskakuje coś takiego:


  1. Uncaught exception: TypeError: Cannot convert 'document.getElementById('time')' to object
  2. Error thrown at line 12, column 1 in liczCzas() in www
  3. document.getElementById('time').innerHTML = 'Pozostalo: +godzin+ : +minut+ : +sekund+';
  4. called from line 19, column 0 in www
  5. animeInt = setInterval(liczCzas(), 1000);


wybaczcie ze sie o pewnie proste rzeczy pyatm, niestety nie umiem kompletnie js.

-------EDIT------------

Naprawiłęm błą i już wyświetla się czas,
teraz jest inny problem.

ponieważ czas powinien maleć, u mnie on nie tylko rośnie to jeszcze ma dziwną formę np:
Pozostalo: 8 godzin, 505 minut, -28264 sekund

czy ktoś wie jak to naprawić?
Go to the top of the page
+Quote Post
CuteOne
post
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Wiem jak to naprawić.. ba.. ty też byś wiedział gdybyś nauczył się JS
Go to the top of the page
+Quote Post
mazyl
post
Post #9





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


Cytat(CuteOne @ 12.03.2012, 07:21:48 ) *
Wiem jak to naprawić.. ba.. ty też byś wiedział gdybyś nauczył się JS

dzięki za pomoc. pomogła mi wiadomość że wiesz jak to naprawić.

wie może ktoś daczego ? dalej nie rozwiązałem tego problemu

Ten post edytował mazyl 12.03.2012, 10:50:58
Go to the top of the page
+Quote Post
lobopol
post
Post #10





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Użyj matematyki, Masz powiedzmy 7000 sekund, dzielisz to sobie na 3600 jeżeli jest większy bądź równy 1 to godzin zostało wynik dzielenia zaokrąglony w dół, a pozostałych sekund zostało 7000 - 1*3600 czyli 3400.
Teraz dzielisz sobie ten czas na 60 aby uzyskać minuty, jeżeli wynik dzielenia jest większy równy 1 to pozostałych minut jest wynik dzielenia zaokrąglony w dół. Od 3400 odejmujesz teraz liczbę minut*60 to co zostanie to sekundy.
Go to the top of the page
+Quote Post
mazyl
post
Post #11





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


wyzej mam coś takiego zapsiane tylko że gdzieś jest błąd.

wskazuje mi Pozostalo: 8 godzin, 505 minut, -28264 sekund (przykładowy czas)

Go to the top of the page
+Quote Post
lobopol
post
Post #12





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


[JAVASCRIPT] pobierz, plaintext
  1. var tmp = ile;
  2. var godzin = Math.floor(ile / 3600);
  3. tmp -= godzin*3600;
  4. var minut = Math.floor(tmp / 60);
  5. tmp -= minut*60
  6. var sekund = tmp;
  7. ile--;
[JAVASCRIPT] pobierz, plaintext


http://jsfiddle.net/32twk/

Ten post edytował lobopol 13.03.2012, 21:17:05
Go to the top of the page
+Quote Post
mazyl
post
Post #13





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


Witam ponownie. Nie tworzyłem nowego tematu bo mój problem nawiązuje do tego.

otóż problem mam taki,

potrzebuje wstawić wyżej pokazany kod JS w pętli tzn chce tworzyć coś takiego:
  1. <?php
  2. $war = mysql_query("select * from tabela where kolumna1 = '2''");
  3. while($warn = mysql_fetch_array($war)) {
  4.  
  5. $pozostalow = $warn['czas'] - time();
  6. ?>
  7. <script type="text/javascript" >
  8.  
  9. var ile =<?php echo $pozostalow?>;
  10. function liczCzas() {
  11.  
  12.  
  13. var tmp = ile;
  14. var godzin = Math.floor(ile / 3600);
  15. tmp -= godzin*3600;
  16. var minut = Math.floor(tmp / 60);
  17. tmp -= minut*60
  18. var sekund = tmp;
  19. ile--;
  20. if (ile > 0) {
  21. document.getElementById('time2').innerHTML = '<center><font color="red">Do końca: '+godzin+' : '+minut+' : '+sekund+'</center>';
  22. } else {
  23. document.getElementById('time2').innerHTML = 'Zakończone';
  24. }
  25. }
  26. var animeInt;
  27.  
  28. animeInt = setInterval(liczCzas, 1000);
  29.  
  30. </script><div id='time2'></div>
  31.  
  32. <?php
  33. }
  34. ?>


Niestety w takiej formie kod przy wiekszej ilości niż 2 dodaje wszystkie razem czasy.

Jak najlepiej rozwiązać ten problem?
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: 24.08.2025 - 00:41