Cruz: warum funktioniert das nicht?

Hallo ihr JS Pros!

Ich habe eine Function...so:

flip (x) {

eval("document.bild"+x+".src")="pics/irgendeinbild.gif";

}

ich rufe die function mit flip(1) auf und möchte, daß er das Bild mit dem namen bild1 ersetzt...und das eval() halt deswegen, weil ich die function mit beliebigen zahlen aufrufen möchte. Aber es will nicht...warum nicht?

Gruß
Cruz

  1. Hallo Cruz!

    flip (x) {
    eval("document.bild"+x+".src")="pics/irgendeinbild.gif";
    }

    Du machst eine Zuweisung an eine Funktion! Es sollte heissen:
    eval("document.bild"+x+".src = "pics/irgendeinbild.gif"");

    Calocybe

    1. Hallo Cruz!

      Du machst eine Zuweisung an eine Funktion! Es sollte heissen:
      eval("document.bild"+x+".src = "pics/irgendeinbild.gif"");

      Calocybe

      äh... warum nicht einfach
      document.images["bild"+x].src = "pics/irgendeinbild.gif"

      CirTap

      1. Hi CirTap!

        äh... warum nicht einfach
        document.images["bild"+x].src = "pics/irgendeinbild.gif"

        Sollte natuerlich auch gehen, aber warum einfach, wenn's auch umstaendlich geht? ;-)
        Deine Variante halte ich auf jeden Fall fuer besser, denn vorausgesetzt die Browser haben eine Trennung zwischen Parsen des Scriptes und Ausfuehren (sprich: Erst kompilieren, dann ausfuehren), so schaltet man diese Optimierungsmoeglichkeit mit eval() auf jeden Fall aus, denn hier wird nicht eher geparst, als das eval() aufgerufen wird. Falls dies in einer Schleife gemacht wird, wird natuerlich jedesmal wieder der uebergebene String auseinandergenommen. Deshalb sollte man eval() nur verwenden, wenn's wirklich notwendig ist.

        Calocybe