lubiemdziem
21.11.2012, 13:05:47
Witam..
Mam taki oto krótki skrypt:
<!DOCTYPE html>
<script language="JavaScript"> var images = new Array()
images[0] = "img1.png";
images[1] = "img2.png";
setTimeout("changeImage()", 40);
var x = Math.floor(Math.random()*2);
function changeImage()
{
document.getElementById("img").src=images[x]
}
changeImage();
<img id="img" src="img0.png" >
Jak widać w linii 17. próbowałem zainicjować skrypt (docelowo zamiania obrazka co 40ms). Co robię źle?
nospor
21.11.2012, 13:13:43
Przecież gdy robisz pierwsze changeImage() to element o ID IMG jeszcze nie istnieje..... robisz go dopiero parę linijek później...
lubiemdziem
21.11.2012, 13:17:28
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
21.11.2012, 13:27:53
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
21.11.2012, 13:32:48
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
21.11.2012, 13:34:18
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
21.11.2012, 13:42:02
Nie wiem, nie potrafię.....
nospor
21.11.2012, 13:42:58
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
21.11.2012, 14:07:25
Skrypt nadal nie działa tak jak powinien:
<!DOCTYPE html>
<script language="JavaScript"> var images = new Array()
images[0] = "img1.png";
images[1] = "img2.png";
setTimeout("changeImage()", 40);
function changeImage()
{
var x = Math.floor(Math.random()*2);
document.getElementById("img").src=images[x];
}
<img id="img" src="img0.png" > <script language="JavaScript"> changeImage();
edit down:
działa, dzięki
nospor
21.11.2012, 14:12:18
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.