Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Wykonywanie funkcji do momentu zmiany wartosci zmiennej
Forum PHP.pl > Forum > Przedszkole
mlody69
Witam,

załóżmy, że posiadam funkcję check(x), którą chcę wykonywać dopóki zmienna status w tej funkcji nie przyjmie wartosci true.
w funkcji check(x) mam
  1. var retry;
  2. if(retry == true)
  3. {
  4. //rob cos
  5. if(status == true)
  6. {
  7. clearInterval(interval);
  8. retry = false;
  9. }
  10. }
  11.  

Natomiast w funkcji, której wywołuję setInterval
  1. interval = setInterval(check(x), 10000);


Nie wiem co robię źlę, czy mam gdzieś błąd logiczny aczkolwiek to nie działa :/
trueblue
  1. interval = setInterval("check('10')", 10000);

  1. interval = setInterval(function(){check(10);}, 10000);
mlody69
@up dziękuje aczkolwiek pojawił się inny problem, wywala mi ciagle ReferenceError: retry is not defined
Próbowałem wiele możliwości ale żadna nie pomaga, nie wiem w którym retry powinna być zdefiniowana.
trueblue
Nie zdefiniowałeś wartości dla retry, więc "wywala".
Proponuję: var retry=false;
Geston
Cytat(trueblue @ 11.04.2014, 15:45:20 ) *
Nie zdefiniowałeś wartości dla retry, więc "wywala".
Proponuję: var retry=false;


Tak tylko wtedy, jeżeli to jest wewnątrz funkcji, musi się coś wykonywać:

  1. var retry = false;
  2.  
  3. //TUTAJ <<<
  4.  
  5. if(retry == true)


co wpłynie na ewentualną zmianę wartości retry.

Inaczej warunek if(retry == true) nigdy nie zostanie spełniony.
trueblue
  1. var retry=true;

I wyprowadzić to poza funkcję.
mlody69
Ogólnie to postać skryptu wygląda następująco
  1. function check() {
  2. var interval;
  3. var retry;
  4. if(retry == true)
  5. {
  6. //rob cos
  7. }
  8. }
  9. $(document).ready(function(){
  10.  
  11.  
  12. // jakies instrukcje
  13. interval = setInterval(function(){check(););}, 10000);
  14. });
Geston
retry ma być tą sprawdzaną zmienną? Że jak osiągnie wartość true to coś się stanie? W którym miejscu wywołujesz zdefiniowaną funkcję check()? Opisz może słownie co chcesz osiągnąć, np: w polu formularza nic nie ma, chce aby co 10 sekund sprawdzać czy coś tam się pojawi, jak się tam coś pojawi to wtedy konkretnie co?
mlody69
Już wyjasśniam.
funkcja check wysyła ajaxem POST'a do innego serwera, który zwraca daną wartość zmiennej status. Chcę wykonywać tą funkcje, dopóki zmienna status nie będzie równa TRUE.
Zmienna retry nie jest tą sprawdzaną.
trueblue
  1. (function check() {
  2. $.ajax({
  3. url: 'strona.php',
  4. dataType: 'json',
  5. success: function(data) {
  6. //w data.html mam kod html jeśli chciałbym gdzieś wstawić
  7. if(data.status=='retry')
  8. setTimeout("check()",10000);
  9. }
  10. });
  11. })();


strona.php
  1. $array=array();
  2. $array['html']='bla bla bla';
  3. $array['status']='retry'; //jesli NIE chcę zakończyć ajaxa
  4. echo json_encode($array);
mlody69
Dziękuje wszystkim, chodziło o coś takiego co napisal trueblue. Działa wszystko smile.gif
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.