Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript] Odliczanie czasu + zapis do zmiennej
Forum PHP.pl > Forum > XML, AJAX
MaciekDZN
Jak zrobić żeby czas sie pojawił i zaczął odliczać, probowałem już na milion sposobów przerabiać ten skrypt i nic sie nie wyświetla tam gdzie powinno być odliczanie :/ proszę o pomoc i z góry dziękuję

ps. nie wiedziałem w jakim znaczniku dodać ten kod i czy w dobrym dziale, niebawem się okaże czy AJAX to odpowiednia kategoria dla takiej wiadomości wink.gif
  1. <?php
  2.  
  3. $chj_pyt = mysql_query("SELECT * FROM gra_pytanie");
  4. while($ch_p = mysql_fetch_array($chj_pyt)){
  5.  
  6.  
  7.  
  8. $nowtera = time();
  9. $pozo=$ch_p["czas"];
  10. $pozostalo = $pozo-$nowtera;
  11. $sees="sekundy_$ch_p[id]";
  12. $idsss=$ch_p["id"];
  13.  
  14. echo "$ch_p[id] <b><font color='yellow'>$ch_p[pytanie]</font></b><br />
  15. Rodzaj: $rodzaj<br />
  16. <form name='posek_$ch_p[id]'><input type='hidden' name='pozostalos_$ch_p[id]' value='$pozostalo' />
  17.  
  18. <input type='hidden' name='pozostalosname_$ch_p[id]' value='$sees' /></form>
  19. Czasu do końca: <span id='$sees' style='font-size: 20px'>TUTAJ MA WYSWIETLIC SIE ODLICZANIE</span> sek<br />";
  20.  
  21. ?>
  22. <script type="text/javascript">
  23.  
  24. var iddd =<?php echo $idsss;?>;
  25.  
  26. czasuu = document.forms[posek+'_'+iddd].elements[pozostalos+'_'+iddd].value;
  27. czasun = document.forms[posek+'_'+iddd].elements[pozostalosname+'_'+iddd].value;
  28.  
  29. o=document.getElementById(czasun);
  30. function odliczaj(o,sek){
  31. var minut = sek / 60 | 0;
  32. var sekund = sek % 60;
  33. sekund = sekund > 9 ? sekund : '0' + sekund;
  34. o.innerHTML=minut+":"+sekund
  35. if(sek>0)setTimeout(function(){odliczaj(o,--sek)},1e3)
  36. if(sek==0)window.location.href="http://chybij.pl/"
  37. }
  38. odliczaj(document.getElementById(czasun),czasuu);
  39. </script>
  40.  
maniana
Cytat
if(sek>0)setTimeout(function(){odliczaj(o,--sek)},1e3)
Co to jest 1e3? Nie powinno tam być czasu?
Wyalertuj sobie minut+":"+sekund przed o.innerHTML i zobaczysz czy skrypt dobrze się odpala. Zobacz jeszcze czy wartości dobrze się pobierają i elementy istnieją.
Sinevar
o=document.getElementById(czasun);

Czy ten czasun na pewno jest nazwą id elementu istniejącego na Twojej stronie? Spróbuj wpisać w otwartym firebugu w firefoxie console.log(o) i sprawdź czy zwraca poprawny obiekt pod którym będziesz potem odliczał ten czas;

Apropos postu wyżej, 1e3 to 1000 smile.gif

var e = setTimeout(function(){alert('e')}, 1e3);
var e = setTimeout(function(){alert('e')}, 1000);

MaciekDZN
sam znalazłem błąd, banalnie prosty, jeżeli komuś bedzie zależeć na który odlicza nieskończoną ilość czasu z bazy danych to podpowiadam tutaj jest błąd:

26. czasuu = document.forms[posek+'_'+iddd].elements[pozostalos+'_'+iddd].value;
27. czasun = document.forms[posek+'_'+iddd].elements[pozostalosname+'_'+iddd].value;
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.