Elya: Zufalls-Bildwechsel Mozilla will nicht

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

--
"When technology ist master
you reach desaster faster."
  1. 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

  2. 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

    1. 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

      --
      "When technology ist master
      you reach desaster faster."