Zufalls-Bildwechsel Mozilla will nicht
Elya
- javascript
Hallo Forum,
kann mir vielleicht jemand von Euch auf die Sprünge helfen, warum dieses simple Script
function ZufallsBildwechsel() {
zufallszahl = (Math.round(Math.random()*3));
if (zufallszahl == 0)
{bild = a0;}
else if (zufallszahl == 1)
{bild = a1;}
else if (zufallszahl == 2)
{bild = a2;}
else if (zufallszahl == 3)
{bild = a3;}
document.images["random1"].src = bild.src;
setTimeout("ZufallsBildwechsel();",5200);
}
in Mozilla nicht läuft bzw. nur einmal (onload=...) ausgeführt wird?
(Bildobjekte a0 bis a3 sind natürlich angelegt)
Ich hatte auch eine "elegantere" Variante mit
bild = eval("a"+zufallszahl) statt der ganzen if else... aber da ist mir ie5.5 mit anderen Funktionen ausgestiegen, dafür funktionierten die anderen 3 Browser ganz gut. Sehr merkwürdig...
Kann erst morgen früh wieder antworten, trotzdem danke für's Anschauen.
Schöne Grüße aus Köln-Ehrenfeld (bald als echter Imi ;-)),
Elya
Hallo,
wenn ich raten müsste würde ich auf die fehlenden Klammern bei den else verzweigungen tippen.
Du könntest ein Array verwenden:
bild = new Array("url1","url2","url3","url4");
zufallszahl = (Math.round(Math.random()*3));
document.images["random1"].src = bild[zufallszahl];
gruß,
Severin
hi,
zufallszahl = (Math.round(Math.random()*3));
was grundsaetzliches: wenn Du mit random arbeitest, erscheinen durch die Rundung der erste und der letzte Wert nur mit halber Haeufigkeit. floor ist besser. Ansonsten habe ich auf die Schnelle keinen Fehler gesehen. Hast Du denn mal in die Konsole geschaut?
('javascript:' in die Url-Zeile eintippen)
Ich hatte auch eine "elegantere" Variante mit
bild = eval("a"+zufallszahl) statt der ganzen if else... aber da
eval ist _nie_ elegant, sondern ein hartes Geschuetz fuer deutlich haertere Faelle. Versuch mal folgendes:
<html>
<head>
<script language="javascript1.2">
var path = "/DeinPfad/";
var myImg = new Array("lala.gif","blub.jpg","foo.gif");
var myImgObj = new Array();
for (i = 0; i < myImg.length; i++) {
myImgObj[i] = new Image();
myImgObj[i].src = path + myImg[i];
}
// randomize Number
function randomNr(num) {
return Math.floor(Math.random () * num);
}
function anim() {
var nr = randomNr(myImg.length);
// testausgabe
document.feld.ausgabe.value = myImgObj[nr].src;
// document.images["random1"].src = myImgObj[nr].src;
go = setTimeout('anim()',1000);
}
</script>
</head>
<body onload="anim()">
<form Name="feld"><input type="text" name="ausgabe" size="30"></form>
</body>
</html>
Gruesse nach Ihrefeld...
Joachim
Hallo Joachim,
eval ist _nie_ elegant, sondern ein hartes Geschuetz fuer deutlich haertere Faelle. Versuch mal folgendes:
[...]
Vielen Dank! Hat prima geklappt. Manchmal stehe ich doch ziemlich auf der Leitung.
Schöne Grüße aus Köln-Ehrenfeld,
Elya