Eric Norbert Falbe: images

Im Tutorial hier bei Selfhtml habe ich zu images mit Javascript ein schoenes Beispiel gefunden. Es ist auf folgender Seite: http://de.selfhtml.org/javascript/objekte/images.htm
Ich habe noch einen Link und eine Funktion hinzugefuegt, um noch ein weiteres Bild darzustellen. Aber stattdessen wird ein leerer schwarzer Ramen mit einem roten X dargestellt. Was ist der Fehler?

<html><head><title>Test</title>  
<script type="text/javascript">  
Zweitbild = new Image(16, 16);  
Zweitbild.src = "Blume.bmp";  
Erstbild = new Image(16, 16);  
Ersttbild.src = "Sand.bmp";  
function Bildwechsel () {  
  document.images[0].src = Zweitbild.src;  
}  
function Bildwechsel1 () {  
  document.images[0].src = Erstbild.src;  
}  
</script>  
</head><body>  
<p>  
<a href="javascript:alert(Zweitbild.src)">Bildquelle ausgeben</a><br>  
<a href="javascript:alert(Zweitbild.height)">Bildhöhe ausgeben</a><br>  
<a href="javascript:alert(Zweitbild.width)">Bildbreite ausgeben</a>  
</p>  
<p>  
<img src="Gras.bmp" alt="Boris"><br>  
<a href="javascript:Bildwechsel()">Bild auswechseln</a> --  
<a href="javascript:Bildwechsel1()">Bild wieder herstellen</a>  
</p>  
</body></html>  

  1. Lieber Eric,

    das .bmp-Bildformat ist kein internettaugliches. Benutze .jpg oder .png (.gif geht auch).

    Zweitbild.src = "Blume.bmp";

    Ungeachtet des unpassenden Dateiformates frage ich mich, warum Du Groß-/Kleinschreibung verwendest. Das erzeugt manchmal nervige Fehlerquellen, da außer bei Windows-Systemen hier genau unterschieden wird!

    Desweiteren kann ich nicht sicher sagen, ob die Bilddateien "Blume.bmp", "Sand.bmp" und "Boris" alle im selben Verzeichnis liegen, wie Dein HTML-Dokument...

    document.images[0].src = Zweitbild.src;

    ...

    document.images[0].src = Erstbild.src;

    Warum nicht direkt den Dateinamen angeben? Warum definierst Du zwei Bildobjekte, um später nur auf die Dateireferenzen zuzugreifen?

    document.images[0].src = "Blume.bmp";

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Warum definierst Du zwei Bildobjekte, um später nur auf die Dateireferenzen zuzugreifen?

      Wg. Preloading?

      Mathias

      1. Weiss nicht, ich habe das so aus dem Beispiel der SelfHTML Seiten zu JavaScript uebernommen. http://de.selfhtml.org/javascript/objekte/images.htm

        Den Dateinamen direkt der Bilddokumentvariable document.images[0].src zuzuordnen wird auch keinen Unterschied machen, oder?

        1. Hallo,

          Den Dateinamen direkt der Bilddokumentvariable document.images[0].src zuzuordnen wird auch keinen Unterschied machen, oder?

          Der Vorteil beim sog. Preloading ist, dass die Bilder nicht erst dann geladen werden, wenn du bildwechsel aufrufst, sondern schon davor im Hintergrund! Das funktioniert nicht mit dem einfachen Dateinamen zuweisen!

          mfg, Flo

          --
          sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
    2. Lieber Felix,

      das .bmp-Bildformat ist kein internettaugliches.

      Beinahe hätte ich an dieser Stelle geschrieben, dass völlig egal sei, welche Formate via Internet übertragen werden und somit Deine Aussage falsch sei.
      Da ich aber weiß, Du meinst, das BMP-Format ist aufgrund mangelnder Unterstützung durch die Browser nicht webtauglich, verzichte ich darauf.

      off:P'heute keine Erbsen zählend'P

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. Die BMP-Datei Blume.bmp wird ohne Probleme von dem JavaScript angezeigt.
        Darin scheint nicht das Problem zu bestehen.
        Ich weiss auch gar nicht wieso du meinst, dass das BMP-Bildformat nicht Browser-faegig waere, zumal es ja von Microsoft selbst entwickelt wurde.
        Siehe http://www.uni-regensburg.de/EDV/Misc/CompGrafik/Script_2.html

        1. Hallo,

          Ich weiss auch gar nicht wieso du meinst, dass das BMP-Bildformat nicht Browser-faegig waere, zumal es ja von Microsoft selbst entwickelt wurde.

          Merkst du was? Du setzt Microsoft == Browser! Da gibts ein schönes Zitat dazu (leider nicht hier): http://german-bash.org/168792

          Allerdings unterstützt Firefox (Gecko) BMP trotzdem: https://developer.mozilla.org/en/Using_URL_values_for_the_cursor_property#Limitations (Die Seite ist zwar in einem anderen Kontext, es steht aber trotzdem drin, welche Bildformate unterstützt werden)

          mfg, Flo

          --
          sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
          1. Ich setzte nichts gleich. Ich meinte nur, dass Microsoft den Internet Explorer und auch das BMP-Grafikformat entwickelt hat. Und logischerweise unterstuetzt der IE natuerlich auch das BMP-Format.
            Darin lag, wie schon mal gesagt nicht das Problem.
            Das eigentliche Problem lag ja an dem falschen Variablennamen mit zwei Ts, wie du es ja richtigerweise festgestellt hast.

            Also danke dann nochmal fuer deinen Hinweis!

            1. Lieber Eric,

              Ich setzte nichts gleich. Ich meinte nur, dass Microsoft den Internet Explorer und auch das BMP-Grafikformat entwickelt hat.

              und?? Microsoft hat sich einen Namen mit Alleingängen gemacht. Gerade was Internetstandards anging, hat Microsoft in selbstherrlicher Weise geglaubt, diese selbst zu definieren - und hat jahrelang die Entwicklung im Internet verpennt. Deshalb haben wir erst jetzt (und wir schreiben das Jahr 2009) einen einigermaßen verlässlichen Microsoft-Browser. Was Standardkonformität angeht, war der IE6 eine peinliche Pleite, und der IE7 leider nur eine Missgeburt.

              Und jetzt kommst Du und redest von Microsoft-only-Technologien...?

              Und logischerweise unterstuetzt der IE natuerlich auch das BMP-Format.

              Klar. Microsoft-Produkte unterstützen einander ganz leidlich. Aber wer ist denn bitteschön auf Microsoft festgelegt?

              Darin lag, wie schon mal gesagt nicht das Problem.

              Nein, für Dich nicht. Aber Du wirst sehr bald merken, dass es durchaus auch User gibt, die keinen Microsoft-Kram benutzen. Sagt Dir "Apple" etwas? Und die haben andere Browser. Und ob die BMP unterstützen, ist eine Frage der Meinung der Entwickler.

              BMP ist kein Internetformat! Und wenn es mancher Browser inzwischen unterstützt, dann ist das keinesfalls vorauszusetzen gewesen. Außerdem ist die Dateigröße von BMP-Dateien viel zu hoch im Vergleich zu PNG oder JPG!

              Das eigentliche Problem lag ja an dem falschen Variablennamen mit zwei Ts, wie du es ja richtigerweise festgestellt hast.

              Mir war doch auch so, als ob an den Dateinamen etwas nicht stimmte... auch wenn ich den Fehler nicht gefunden habe.

              Liebe Grüße,

              Felix Riesterer.

              --
              ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    3. Ich habe jetzt mal jpg-Bilder benutzt und nur Kleinbuchstaben fuer deren Namen benutzt. Aber trotzdem wird nur ein rotes X mit schwarzem Rand angezeigt, wenn man den zweiten Link anklickt und damit die Funktion Bildwechsel1 aufruft. Woran koennte es noch liegen?

  2. Hallo,

    Erstbild = new Image(16, 16);
                             Ersttbild.src = "Sand.bmp";

    ^

    document.images[0].src = Erstbild.src;

    Wenn die Wörter gleich wären, würden sie die gleiche Länge haben! Für sowas sind die data-URLs doch sinnvoll: einfach neuer Tab, source in die URL hinter das data kopiert und bestaunt, dass Firebug gleich einen Fehler anzeigt!!

    mfg, Flo

    --
    sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
    1. Danke Flo, das zweite t hatte ich glatt uebersehen.
      Da muss ich wohl irgendwie zweimal auf die T-Taste gekommen sein.
      Jetzt klappt das mit dem Bildwechsel aber prima!
      Firefox habe ich leider auf meinem anderen Rechner.
      Aber gut zu wissen, dass Firefox so Javascript freundlich ist.