Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Javascript setinterval clearinterval problem...
Forum PHP.pl > Forum > XML, AJAX
adamli
Witam
W pewnym skrypcie php mam zdefiniowany tabpanel z extjs... w zaleznosci od tego jaki
tab sie kliknie wywolywany jest nastepny skrypt wczytujacy zawartosc dla tego tab'a
skrypt ten zawiera rowniez funcje setinterval ktora aktualizuje zawartosc tego tab'a co np. 10 sekund...
Problem polegana tym iz przelaczajac np z tab1 na tab2 musialbym wyczyscic to co uruchomilem
przez setinterval dla pierwszego tab'a... jak moge to zatrzymac? jezeli setInterval i clearInterval
sa w jednym skrypcie to nie jest problem a jak moge to rozwiazac w moim przypadku?questionmark.gif
Z gory dziekuje za odpowiedz.

Adam
vokiel
Nie znam extjs ale zasada zastosowania będzie podobna
Klikając na tab wywołujesz funckję do której przekazujesz np id tab'a:
  1. <?php
  2. function tab(id){
  3.     var tabs = new Array('tab1','tab2','tab3');
  4.     for (var i=0;i<tabs.length;i++){
  5.         clearInterval(tabs[i]);
  6.     }
  7.     // jakieś akcje
  8.     setInterval(id);
  9. }
  10. ?>
adamli
to nie jest takie proste... postaram sie wytlumaczyc...
otoz skrypt1.js laduje okno z panelem z tabami...

Ext.getCmp(\"wallbtabs\").load(\"wallboard_new.php?tab=1\");
przy aktywacji tab2 i tab3 jest przekazywany odpowiendnio 2,3
w wallboard_new zdefiniowany jest setinterval ktory za pomoca ajaxa
odswieza zawartosci tab

NIESTETY przy wywolaniu wallboard_new.php?tab=2 (przy aktywacji 2-go tab'a)
setinterval/task dla pierwszego taba nie jest nadpisywany tylko tworzona jest jakby druga instancja itd...
w ten sposob za kazdym przelaczeniem taba powstaje nowy 'task'.
Kumamy?

Adam
vokiel
W wallboard_new.php przy tworzeniu setinterval możesz zapisać jego id w sesji, a poźniej, gdy załadujesz inną zakładkę usunąć wszystkie zgromadzone id intervalu z sesji poprzez clearInterval(id_zsesji).

Ew mozesz tworzyc w kazdym przypadku tworzyc takie samo id, i na poczatku sprawdzac czy wywolano setInterval dla danego id, jesli tak to clearInterval i nowy setInterval, a jeśli nie, to samo setInterval.
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.