![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 21.05.2012 Skąd: krk Ostrzeżenie: (0%) ![]() ![]() |
Witam,
od jakiegoś czasu staram się opanować pisanie w jQuery, stąd też ogromna prośba do Was. Zastanawiam się, jaką postać będzie mieć skrypt, który po naciśnięciu przycisku #button, pokaże powiedzmy czterokrotnie w pętli jakiś alert w odstępie dwóch sekund. Brzmi prosto, natomiast mój kod: Kod $("#button").click(function(){ for(j=0; j<4; j++) { setTimeout(function(){ alert(j); },2000); } }); owszem czeka, ale tylko za pierwszym razem (a ma być za każdym pokazaniem alertu), natomiast sam alert pokazuje jedynie cztery razy czwórkę. Zwracam się z prośbą o pomoc w rozwiązaniu do Was (IMG:style_emoticons/default/smile.gif) Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. To pytanie o podstawy JS bez żadnego związku z jQuery.
2. Ta pętla wykona Ci się właściwie natychmiast, za każdym razem ustawiając wywołanie funkcji na za 2 sekundy, możesz: 2.1. Ustawić by funkcja wykonywała się po 2, 4, 6 i 8 sekundach. 2.2. Definiować kolejne wywołanie na końcu poprzedniego. 2.3. Skorzystać z setInterval, a po czwartym wykonaniu przerwać dalsze przy pomocy clearInterval. 3. Wyświetla Ci się 4 za każdym razem, ponieważ cały czas operujesz na tej samej zmiennej, a ta przecież po wykonaniu pętli ma wartość 3. Musisz zadbać o to by kod funkcji z setTimeout operował już w nowym kontekście/zasięgu. W JavaScripcie zasięg jest definiowany przez funkcję, tak więc możesz skorzystać z domknięcia, które zostanie natychmiast wykonane:
PS. Formatuj swój kod. Ten post edytował Crozin 30.08.2012, 18:18:22 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 11:15 |