Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] pętla while
Forum PHP.pl > Forum > Przedszkole
gebp
żeby łatwiej się pisało kod:
  1. function okno()
  2. { var status=0;
  3. win=window.open('jakis_tam_plik.html','plik','height=200,width=400');
  4. win.focus();
  5. while (status>0)
  6. {if(win.closed)
  7. {stasus=1;}
  8. }
  9. alert('OKNO ZAMKNIĘTE');
  10. }


No i problem polega na tym że pętla while nie powtarza się (pokazuje się alert).
Dlaczego questionmark.gif

Z tego co jak rozumiem pętle while "kręci się ona dopóty dopóki nie zostanie spełniony warunek. W moim przypadku warunek jest że zmienna status musi być większa od 0. Taka sytuacja nastąpi tylko w przypadku gdy nowo otwarte okno (win) zostanie zamknięte. Dlaczego więc wyświetla się alert questionmark.gif?
no_face
Zauwaz, ze na samym poczatku petla wogole nie ruszy. status = 0 sprawdzenie w petli czy status > 0; falsz petla nie rusza itd.
gebp
~no_face miałeś rację. Zmieniłem to tak:
  1. function okno()
  2. { var status;
  3. win=window.open('jakis_tam_plik.html','plik','height=200,width=400');
  4. win.focus();
  5. while (status!='undefined')
  6. {if(win.closed)
  7. {stasus=1;}
  8. }
  9. alert('OKNO ZAMKNIĘTE');
  10. }

No i teraz kolejny klops. Firebug powiadamia że " skrypt przestał działać lub jest zajęty" i mogę go albo przerwać albo kontynuować albo debugować.
Przy trzeciej opcji Firebug jako problem wskazuje linię "{stasus=1;}".
Samo nowe okno też otwiera się tak że ... NO bardzo powoli.
Jak to rozwiązać. Nie zabardzo łapię się w javascript.


No i zrobiłem. Dla mnie wielki sukces. Jakby ktoś potrzebował to wklejam kod.
  1. var status=0;
  2. var win;
  3. var id;
  4. function plik()
  5. {
  6. if(status==0) // wlączenie
  7. {win=window.open('mag/pl.php','plik','height=200,width=400');
  8. win.focus();
  9. status=1;
  10. }
  11. if (status==1) // wlączenie powtórzeń
  12. { if ( win.closed )
  13. { status=3;}
  14. id=window.setInterval("plik()",3000);
  15. status=2;
  16. }
  17. if(status==2) // sprawdzenie
  18. { if (win.closed)
  19. { status=3;}
  20. }
  21. if (status==3) // i efekt
  22. {
  23. alert("OKNO ZAMKNIĘTE");
  24. ststus=0;
  25. window.clearInterval(id);}
  26. }
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.