Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] odliczanie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
nmts
Chce odliczanie np. od 00:05:24 do 00:00:00

Wykombinowałem coś takiego:
  1. function timeleft(){
  2. $('.timeleft > span').each(function(){ // dla kazdego czasu
  3.  
  4. span = $(this).html(); // pobieram czas
  5. left = span.split(":");
  6. if(left[0]+left[1]+left[2]=="000000"){ alert(11); $(this).remove(); } // usuwam jeśli koniec czasu
  7. seconds = (parseInt(left[2]))+(parseInt(left[1])*60)+(parseInt(left[0])*3600)-1; // obliczam ilosc sekund i odejmuje jeden
  8.  
  9. newtime = new Date(null,null,null,null,null,seconds,null); // tworze datę na podstawie określonej wyżej liczbie sekund, czyli N sekund od 1899 (;
  10. // a poniżej dziele datę na godziny,minuty i sekundy ponadto jeśli liczba mniejsza niż 10 to dodaje dodatkowe 0 aby pozostał odpowiedni format
  11. hours = (newtime.getHours()<10)?"0"+newtime.getHours():newtime.getHours();
  12. minutes = (newtime.getMinutes()<10)?"0"+newtime.getMinutes():newtime.getMinutes();
  13. seconds = (newtime.getSeconds()<10)?"0"+newtime.getSeconds():newtime.getSeconds();
  14. $(this).html(hours+":"+minutes+":"+seconds); // wyswietlam
  15.  
  16.  
  17. });


Ale za bardzo nie rozumiem czemu po 00:00:09, przeskakuje do 23:59:59;)
fleshgrinder
pewnie dlatego, ze nie podajesz drugiego argumentu przy parseInt, tego ktory okresla w jakim systemie liczbowym ma byc zwracany int smile.gif

dla eksperymentu, sprawdz co wypisze taki kod:
[JAVASCRIPT] pobierz, plaintext
  1. alert(parseInt('09'));
  2. alert(parseInt('09', 10));
[JAVASCRIPT] pobierz, plaintext


przy okazji, wydaje mi sie, ze to Date() Ci troche komplikuje sprawe. rozwaz ponizszy, chyba nieco prostszy kod, dla <div id="time">:
[JAVASCRIPT] pobierz, plaintext
  1. $(function() {
  2. var counterInterval;
  3.  
  4. window.counter = function() {
  5.  
  6. var time = $('#time').html().split(':');
  7. for(var i = 0; i < time.length; i++) { // konwersja na inty
  8. time[i] = parseInt(time[i], '10');
  9. }
  10. // odjecie sekundy od aktualnego czasu, jesli sie nie da - usuniecie interwalu i wyswietlenie alertu
  11. if(time[2] > 0) {
  12. time[2] -= 1;
  13. }
  14. else {
  15. if(time[1] > 0) {
  16. time[1] -= 1;
  17. time[2] = 59;
  18. }
  19. else {
  20. if(time[0] > 0) {
  21. time[0] -= 1;
  22. time[1] = 59;
  23. time[2] = 59;
  24. }
  25. else {
  26. alert('koniec odliczania');
  27. clearInterval(counterInterval);
  28. }
  29. }
  30. }
  31.  
  32. // stworzenie wyjsciowego lancucha
  33. var newTime = [];
  34. for(var i = 0; i < time.length; i++) {
  35. newTime[i] = (time[i] < 10) ? '0' + time[i] : time[i];
  36. }
  37. $('#time').html(newTime[0] + ':' + newTime[1] + ':' + newTime[2]);
  38.  
  39. }
  40. counterInterval = setInterval('counter()', 1000);
  41. });
[JAVASCRIPT] pobierz, plaintext
nmts
Masz racje, trzeba było podać system liczbowy, inaczej 09 = 0. smile.gif

Wykorzystanie Date() do odliczania do zera jest nieco niestandardowe żeby nie powiedzieć dziwne ale pozostanę przy tym póki co. Spełnia swoją rolę w każdym razie. winksmiley.jpg
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.