Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Odliczanie czasu
Forum PHP.pl > Forum > Przedszkole
mazyl
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.
CuteOne
Patrz moja sygnatura
mazyl
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ć.


lobopol
ile–-; daj
mazyl
dalej jest ten sam błąd.
prowseed
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
mazyl
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ć?
CuteOne
Wiem jak to naprawić.. ba.. ty też byś wiedział gdybyś nauczył się JS
mazyl
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
lobopol
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.
mazyl
wyzej mam coś takiego zapsiane tylko że gdzieś jest błąd.

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

lobopol
[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/
mazyl
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?
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.