Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Inicjowanie banalnego skryptu
Forum PHP.pl > Forum > Przedszkole
lubiemdziem
Witam..
Mam taki oto krótki skrypt:

  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <script language="JavaScript">
  4. var images = new Array()
  5. images[0] = "img1.png";
  6. images[1] = "img2.png";
  7. setTimeout("changeImage()", 40);
  8.  
  9. var x = Math.floor(Math.random()*2);
  10.  
  11. function changeImage()
  12. {
  13. document.getElementById("img").src=images[x]
  14. }
  15. changeImage();
  16. </head>
  17. <img id="img" src="img0.png" >
  18. </body>
  19. </html>



Jak widać w linii 17. próbowałem zainicjować skrypt (docelowo zamiania obrazka co 40ms). Co robię źle?
nospor
Przecież gdy robisz pierwsze changeImage() to element o ID IMG jeszcze nie istnieje..... robisz go dopiero parę linijek później...
lubiemdziem
Rozumiem, jednak to nie rozwiązuje mojego problemu. Jak już się domyślacie jestem kompletnym laikiem w temacie, ale wydaje mi się, że inicjowanie funkcji changeImage() nie ma wpływu na stałą x.

Czy mam wrzucić stałą x w funkcję, która zainicjuje?

Sorry za problem, ale to nie jest łatwe gdy to jest Twój pierwszy skrypt
nospor
To inaczej do tego podejdźmy.... To może napisz jaki masz problem, co ci nie działa, a działać powinno. I jak wg ciebie działać powinno
lubiemdziem
Celem skryptu jest "zamiana" obrazka co jakiś określony czas.

Obrazkó będzie nieco więcej niż 2, a x to liczba losowa.



Obecnie jest tak: Obrazek zmienia się przy odświeżeniu całej strony, brakuje dynamiki, którą chciałem zainicjować za pomocą changeImage()
nospor
Wartośc dla zmiennej X określasz tylko raz. Potem jej nie zmieniasz. No to chyba logiczne, że za każdym razem będzie to ta sama wartość a co za tym idzie ten sam obrazek.

X masz ustalać wtedy, gdy zmieniasz obrazek.
lubiemdziem
Nie wiem, nie potrafię.....
nospor
Nie nie potrafisz a ci sie poprostu nie chce pomyśleć....

Kod


function changeImage()

{
var x = Math.floor(Math.random()*2); // O TU MA BYĆ

document.getElementById("img").src=images[x];

}

Naprawdę takie trudne?
lubiemdziem
Skrypt nadal nie działa tak jak powinien:

  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <script language="JavaScript">
  4. var images = new Array()
  5. images[0] = "img1.png";
  6. images[1] = "img2.png";
  7. setTimeout("changeImage()", 40);
  8.  
  9. function changeImage()
  10. {
  11. var x = Math.floor(Math.random()*2);
  12. document.getElementById("img").src=images[x];
  13. }
  14. </head>
  15. <img id="img" src="img0.png" >
  16. <script language="JavaScript">
  17. changeImage();
  18. </body>
  19. </html>


edit down:
działa, dzięki
nospor
setTimeout("changeImage()", 40); odpala funkcje raz. Jak chcesz mieć to kilka razy to musisz użyć albo setInterval() albo odpalać ten kod w funcji o tak:
Kod


function changeImage()

{
setTimeout("changeImage()", 500); //za pól sekundy znowu się wywoła

var x = Math.floor(Math.random()*2);

document.getElementById("img").src=images[x];

}

I na przyszłość jak coś nadal nie działa to napisz co nie działa. Luknij też do konsoli błędów czy przypadkiem nie ma jakis błędów js.
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.