Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] SetTimeout() i niepoprawnie działająca pętla
Forum PHP.pl > Forum > Po stronie przeglądarki
unnamedly
Witam, mam taki kod:

  1. for(i = 15; i > 0; i--)
  2. {
  3. var b = i*100;
  4. var c = i*25;
  5. var e = 16-i;
  6. var f = (b+b)*e;
  7. $("#slidertitle3").animate({left: "0px"}, b);
  8. setTimeout(function() {
  9. $("#slidertitle3").animate({left: c+"px"}, b);
  10. }, f);
  11. }


[...] tyle, że zmienna i w 15 obiegach wynosi 1 (sprawdzone alertem w setTimeout(), jednak w alercie poza setTimeout zmienne poprawnie się zmniejszają (15,14,13 itd)). Co jest powodem i jak to ma poprawnie wyglądać?
lukasz1985
[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var i
  3. for(i = 15; i > 0; i--)
  4.  
  5. {
  6.  
  7. var b = i*100;
  8.  
  9. var c = i*25;
  10.  
  11. var e = 16-i;
  12.  
  13. var f = (b+b)*e;
  14.  
  15.  
  16. setTimeout(function(i) {
  17.  
  18. alert(i)
  19.  
  20.  
  21. }, f, i);
  22.  
  23. }
[JAVASCRIPT] pobierz, plaintext



ale nie będzie działać pod IE <=8.

Tak powinno działać wszędzie.
[JAVASCRIPT] pobierz, plaintext
  1. var i
  2. for (i = 15; i > 0; i--)
  3.  
  4. {
  5. var b = i * 100;
  6. var c = i * 25;
  7. var e = 16 - i;
  8. var f = (b + b) * e;
  9. var argument = i
  10.  
  11. nowyTimeout( function(argument) {
  12. alert(argument)
  13. }, f, argument)
  14. }
  15.  
  16. function nowyTimeout(funkcja, timeout, arg1, arg2, arg3, arg4) {
  17.  
  18. var funkcjaReferencja = function() {
  19. funkcja(arg1, arg2, arg3, arg4)
  20. }
  21. return setTimeout(funkcjaReferencja, timeout)
  22. }
[JAVASCRIPT] pobierz, plaintext


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.