Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] setTimeout
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MaestroS
Napisałem taką funkcję:
  1. function Renew(user, button)
  2. {
  3. advAJAX.post({
  4. url : "plik.php",
  5. parameters:{
  6. user: user
  7.  
  8. },
  9. onSuccess : function(obj) {
  10. if (obj.responseText == "renewal_ok")
  11. {
  12. alert('Odnowa przebiegła pomyślnie.\nMożesz kontynuować swoją przygodę.');
  13. button.disabled = true;
  14. }
  15. else
  16. {
  17.  
  18. document.getElementById('status').innerHTML=obj.responseText;
  19. setTimeout(Renew(user, button), 10000);
  20. button.disabled = true;
  21. }
  22. },
  23. });
  24. }


Tak ją wywołuję:
  1. <div id="status"></div>
  2. <BR><input type="button" value="Odpocznij" id="rest" onClick="Renew('' . $GlobalUserAccount['character_name'] . '', document.getElementById('rest'))">


Moje pytanie:
Dlaczego setTimeout nie działa ? Klikając na 'Odpocznij' - oczywiscie, statystyki sie odnawiaja, ale co 0,01 sec., a nie jak setTimeout nakazuje: co 10 sekund... poprostu staty odnawiaja sie za szybko. Gdzie popelnilem blad ?
sticker
czas jest w mikrosekundach wiec pewnie sie pomyliłes z zerem :]
abc667
no bo ty wywołujesz funkcje tam a nie przekazujesz jej do timeouta

można to zrobić np tak


  1. setTimeout(function() { Renew(user, button); }, 10000);
atomix1040
tudziez podac paretr jako zmienna znakowa

setTimeout ("funckja()", 10000);
a nie
setTimeout (funkcja(), 10000);
abc667
ale tak nie przekaże się łatwo np referencji do obiektu a tak jak podałem jest optymalnie
atomix1040
jesli potrzeba przekazac parametry do funkcji to jasne ze nie ale jest to jest prosta metoda update naprzyklad z Prototype Updater Ajax to wystarczy, mniej kodu to zawsze lepiej.
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.