Wyswietlanie obrazkow w petli

0

Witam serdecznie,
Ucze sie od niedawna jezyka javascript i napotkalem juz pierwsze problemy na drodze. Wiec tak : mam 3 obrazki zapisane na dysku i chce je w peti wyswietlic po kolei np. co 3 sekundy, wiec pierwszy obrazek mi sie wyswietla pozniej czeka 3 sek drugi i trzeci i na tym koniec. Kod ktory stworzylem nie dziala pomozecie ??Dzieki z gory damian

<body>
<img src="fotki/1.jpg" id="baner">

<script type="text/javascript">
    window.onload = dzialaj;
    var licznik=0;
    
    function dzialaj() {
        var tablica = new Array("fotki/1.jpg","fotki/2.jpg","fotki/3.jpg");
        while (licznik < tablica.length) {
            document.getElementById("baner").src = tablica[licznik];
            licznik++;

        }
         setTimeout(dzialaj, 3 * 10000);
    }
</script>
0

3 sekundy to 3000 milisekund a nie 30000

oprócz tego:
document.getElementById("baner").src = tablica[licznik % 3]; // "% 3" to jest modulo 3 - poczytaj na wikipedii

1

Cześć,
napiszę Tobie kilka uwag:

  1. Wiem, że jest to myślenie przyszłościowe, ale jak ogarniesz podstawy to przerzuć się na jQuery.
  2. Napisałeś, że wyświetla pierwszy, drugi, trzeci i koniec. Jest tak dlatego, że masz pętlę while(), która wykonuje się do momentu aż warunek zostanie spełniony. Masz takie iteracje ("obroty" pętli):
Iteracja licznik tabela.length licznik < tabela.length Fotka
przed działaniem pętli 0 3 tak fotki/1.jpg
1 0 3 tak fotki/1.jpg
2 1 3 tak fotki/2.jpg
3 2 3 tak fotki/3.jpg
4 3 3 nie - stop pętli brak

Powinieneś zrobić zamiast:

licznik++

to:

licznik = 1;
// ... tutaj reszta kodu
licznik = (licznik % 3 = 0) ? 1 : licznik

To jest uproszczony zapis if-else (dawno nie pisałem w JS, więc mogę się składniowo mylić)

  1. Błąd dla powyższego przykładu jest taki, że jak masz na początku widoczną fotki/1.jpg i rozpoczynasz pętle to za pierwszym razem zamienia fotki/1.jpg na fotki/1.jpg - czyli przez 20sec masz fotki/1.jpg a później każdą po 10sec.
  2. Rozumiem, że chcesz zrobić typowy efekt slidera. Metoda, którą stosujesz jest bardzo zła, ponieważ nie jest to dodaniem elementu do strony, tylko normalnie jest to generowane. W przypadku wszelkich spowolnień, klient będzie widział ładujący się obrazek lub po prostu nic.

Robi się to poprzez zastosowanie listy i "chodzeniem" po niej - dzięki temu wszystko masz załadowane na stronie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1