Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JS] setTimeout
MaestroS
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


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 ?

Ten post edytował MaestroS 28.06.2007, 18:23:55
Go to the top of the page
+Quote Post
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


czas jest w mikrosekundach wiec pewnie sie pomyliłes z zerem :]
Go to the top of the page
+Quote Post
abc667
post
Post #3





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

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


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);
Go to the top of the page
+Quote Post
atomix1040
post
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.04.2007

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


tudziez podac paretr jako zmienna znakowa

setTimeout ("funckja()", 10000);
a nie
setTimeout (funkcja(), 10000);
Go to the top of the page
+Quote Post
abc667
post
Post #5





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

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


ale tak nie przekaże się łatwo np referencji do obiektu a tak jak podałem jest optymalnie
Go to the top of the page
+Quote Post
atomix1040
post
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.04.2007

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


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.
Go to the top of the page
+Quote Post

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: 22.09.2025 - 07:28