![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 11.03.2009 Skąd: Cieszyn Ostrzeżenie: (0%) ![]() ![]() |
Kod $("#test").click(function (){loop(4); }); var i = 0; function loop( iHowMany ){ $("#test").text(i++); if ( i < iHowMany ){ setTimeout("loop( iHowMany )",1000); } } w założeniu funkcja ta po naciśnięciu przycisku powinna się powtarzać tak długo dopóki "i" nie będzie mniejsze od 4 Przeszukałem już wiele stron i ciągle nie mogę sobie z tym poradzić. Przy próbie ponownego wywołania funkcji Loop wyskakuje błąd"loop is not defined" Bardzo proszę o pomoc bo przez to nie mogę kontynuować mojego projektu. ogólnie jako argument będzie podawana tabela z parametrami i po określonym czasie mają one się zmieniać lecz nie mogę przez to przebrnąć |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to nie pokazujesz w takim razie całego kodu bo to ci podałem działa bez problemu
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
No to nie pokazujesz w takim razie całego kodu bo to ci podałem działa bez problemu zadziała bez problemu ale tylko i wyłącznie wtedy, gdy funkcja loop jest zdefiniowana w globalnym zasięgu (czyli pod window), jeśli jednak funkcja jest zagnieżdżona niżej ten sposób nie zadziała (i wtedy window.loop jest nie zdefiniowany ;] - inna sprawa, że pisze samo loop) - poza tym tą metodę nazwałbym niejawnym używaniem eval'a... na szybko wystarczyło, jeśli wywołanie obudował by w funkcję anonimową i nie jako tekst:
jednak jeśli gdzieś dalej on operuje na zmiennej iHowMany a nie chciał, by się zmieniała powinien tą zmienną przekazać jako parametr - czasami na dynamicznym sterowaniu można podmieniać i definicje metod/funkcji - więc funkcję też można przekazać dla pewności przez callback jeśli jej definicja ma się nie zmieniać:
przypisanie zmiennych do null'a callback = arg1 = null; nie jest konieczne aczkolwiek lepiej zerować nie potrzebne zmienne ze znikającego zasięgu by zapobiec wyciekowi pamięci w niektórych przeglądarkach... wszystko też zależy, gdzie dana zmienna jest zdefiniowana, od zasięgu i od tego, czy funkcja przyjmuje argumenty - jeśli nie przyjmuje argumentów a operuje na zmiennych z wyższego poziomu to równie dobrze można zapisać bez cudzysłowia: Kod setTimeout(callback, 1000); wszystkie powyższe przypadki są szybsze od niejawnego eval'a i dają możliwość operowania na zagnieżdżonych zmiennych i funkcjach... Ten post edytował zegarek84 25.05.2011, 10:36:53 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 19:34 |