Javascript - gdzie błąd?


(4dr14n) #1

Witam.

Mam problem z oskryptowaniem js na stronie. Chciałem wstawić kod, dzięki któremu obrazki na stronie będą się automatycznie zmieniały co 5 sekund. Wszystko niby działa, ale jest jeden problem, bo mam w kodzie strony zapisany też kod js do wyskakującego okna na stronie, które jest niejako "wywoływane" przez komendę onLoad w znaczniku

. Ten kod javascriptowy odnoszący się do zmieniających się zdjęć, też jest wywoływany przez onLoad w znaczniku .

Nie wiem jak je pogodzić - tzn. gdy wykasuje "onLoad" odnoszący się do wyskakującego okna, to ono oczywiście nie pojawia się na stronie już, a obrazki automatycznie się zmieniają co 5 sekund (czyli jest ok), ale gdy zostawię obydwa "onLoad" (jeden odnoszący się do wyskakującego okna a drugi do zmieniających się zdjęć), to zdjęcia już nie chcą się zmieniać, ale okienko wyskakujące działa poprawnie.

Dlatego właśnie prawdopodobnie coś nie tak napisałem w znaczniku

, ale na wszelki wypadek wkleję też kod js do zmieniających się zdjąć, który jest oczywiście w sekcji

W sekcji head:

w znaczniku :

gdzie poniższy kod odnosi się do wyskakującego okienka:

onLoad="setTimeout('showWin()',delay*1)"

a ten, do zmieniających się zdjeć:

onLoad="ZmianaObrazu();"

(Monczkin) #2

4dr14n , nazwij temat konkretnie, zgodnie z zasadami zakładania tematów na forum.


(Hindol) #3

jeśli dobrze pamiętam:

onLoad="setTimeout('showWin()',delay*1); ZmianaObrazu();"

lub najlepiej zrobić to w 1 inicjalizującej funkcji


(mario@) #4

Taka mała dygresja :wink: Skoro obrazek ma zawsze zmieniać się co X to lepiej będzie zastosować setInterval (dla zdarzenia onload) zamiast setTimeout (znajdującego się wewnątrz funkcji ZmianaObrazu()).

Łącząc to z tym co napisał powyżej hINDUss mogło by to wyglądać tak

onLoad="setTimeout('showWin()',delay*1);setInterval('ZmianaObrazu()',5000); "

W taki układzie wewnątrz funkcji ZmianaObrazu() polecenie setTimeout("ZmianaObrazu()", 5000); jest całkowicie zbędne a efekt końcowy jest taki sam.


(4dr14n) #5

Hej, bardzo Wam dziękuję za odpowiedź :slight_smile: Rzeczywiście zgodnie z tym co napisał HIndus, nie zlikwidowałem cudzysłowów.

Mario Tobie też dziękuję, ale niestety nie znam się kompletnie na js i nie wiem o czym piszesz, ale zauważam dobre chęci, także jeszcze raz dziękuję za odpowiedź i zainteresowanie :wink:

Pozdrawiam.


(Kubarek) #6

Krótszy kod:

function ZmianaObrazu() {

  if (++imgc == 4) imgc = 1;

  document.getElementById("obraz1").src = imgc + ".JPG";

  setTimeout(ZmianaObrazu, 5000);

}