Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Timer i wyłączenie setInterval
miccom
post
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Dzień dobry (IMG:style_emoticons/default/smile.gif)

Mam taki oto skrypt timera na stronie:

  1. counter = new Array();
  2. function loadTimer(czas,lokalizacjaTimera,idTimera){
  3. var s = czas;
  4. counter.idTimera = setInterval(timer, 1000); // ustawienie funkcji odpowiedajacej za cykliczne wywolanie(co 1 s) funkcji timer()
  5. var min = s / 60; // minuty
  6. var h = min / 60; // godziny
  7. var sLeft = Math.floor(s % 60); // pozostało sekund
  8. var minLeft = Math.floor(min % 60); // pozostało minut
  9. var hLeft = Math.floor(h); // pozostało godzin
  10.  
  11. if (minLeft < 10)
  12. minLeft = "0" + minLeft;
  13. if (sLeft < 10)
  14. sLeft = "0" + sLeft;
  15.  
  16. var out = hLeft + ":" + minLeft + ":" + sLeft; //tekst wyswietlony uzytkownikowi
  17. document.getElementById(""+lokalizacjaTimera+"").innerHTML = out;
  18.  
  19. $("#"+lokalizacjaTimera+"").html(out); // przypisanie tekstu timera do odpowiedniego elementu html
  20. function timer()
  21. {
  22. --s;
  23. var min = s / 60; // minuty
  24. var h = min / 60; // godziny
  25. var sLeft = Math.floor(s % 60); // pozostało sekund
  26. var minLeft = Math.floor(min % 60); // pozostało minut
  27. var hLeft = Math.floor(h); // pozostało godzin
  28.  
  29. if (minLeft < 10)
  30. minLeft = "0" + minLeft;
  31. if (sLeft < 10)
  32. sLeft = "0" + sLeft;
  33. var out = hLeft + ":" + minLeft + ":" + sLeft; //tekst wyswietlony uzytkownikowi
  34. $("#"+lokalizacjaTimera+"").html(out); // przypisanie tekstu timera do odpowiedniego elementu html
  35. if( s <= 0) //licznik osiągnął 0
  36. {
  37. //licznik się wyzerował należy podjąć odpowiednią akcje
  38. clearInterval(counter.idTimera); //zatrzymanie licznika
  39. console.log("kasujemy timer id="+idTimera);
  40. $.ajax({
  41. type : "POST",
  42. dataType : "json",
  43. url : "up.php",
  44. data : {
  45. 'idTimera':idTimera},
  46. success: function(data) {
  47. if (data.error)
  48. {
  49. alert("wystąpił błąd"+data.error);
  50. }
  51. else
  52. {
  53. alert("zadanie zakończone");
  54. }
  55. }
  56. });
  57. return;
  58. }
  59. }
  60. }


A wywołuję go tak:

  1. $(document).ready(function() {
  2. loadTimer(<?php echo $wnetrzePracownika['time'];?>,'timer<?php echo $kolejnyNumer;?>',<?php echo $kolejnyNumer;?>);
  3. });

I jeśli jeden Interwał jest uruchomiony to wszystko pięknie działa i interwał zostaje wyłączony, natomiast jeśli jest kilka uruchomionych to mimo wykonania zadania interwał nadal działa.
I tutaj moje pytanie, jak wyłączyć setInterval jeśli np. są 4 uruchomione?
Proszę o pomoc.

Ten post edytował miccom 5.12.2015, 10:51:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Nie. Tablica dalej jest pusta (możesz to sprawdzić sprawdzając counter.length).

Z racji tego, że w JS tablice są po prostu specyficznym typem obiektów, zapis typu tablica.wlasnosc działa tak samo jak obiekt.wlasnosc.

Jak chcesz coś dodać do tablicy, najłatwiej użyć counter.push
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 02:10