Elya: Sorry - nochmal Bildwechselfunktion

Hallo,
ich glaube es verstanden zu haben und trotzdem läuft es nicht - vielleicht einfach nur ein Brett vor dem Kopf? Ich komme nicht dahinter (http://forum.de.selfhtml.org/archiv/2002/5/11273/#m63131) hat mir schon geholfen.

Also:
<SCRIPT language=javascript type="text/javascript"><!--
facts_o=new Image();              facts_o.src="../pics/navi/1_facts_o.gif"; //normale grafik
facts_n=new Image();            facts_n.src="../pics/navi/1_facts_n.gif"; //mouseover-grafik
//--></script>
definiert mir meine Bildobjekte.

und:
function wechsel(layerid,name,obj) {
         if (document.layers){
         document.layers[layerid].document.images[name].src=obj.src;
         }
         else
         {
         document.images[name].src=obj.src;
         }
           }

steht in einem externen js-file.

Aufgerufen wird's mit

<div id="container1">
<table>
<tr>
<td><a href="#" onMouseOver="wechsel('container1','facts_o',facts_n)" onMouseOut="wechsel('container1','facts_o',facts_o)"><img name="facts_o" src="../pics/navi/1_facts_o.gif" width="358" height="17" border="0" alt=""></a></td>
</tr>
</table>
</div>

Der erste Bildwechsel findet korrekt statt, aber bei mouseout passiert garnichts - in keinem Browser. Und dummerweise auch keine Fehlermeldungen in der Konsole...
Bin ich blind? Oder was passiert hier?

Danke für einen Schubs in die richtige Richtung...;-)

Elya

  1. Hi, Elya

    onMouseOut="wechsel('container1','facts_o',facts_o)

    ^^^^^^^  ^^^^^^^
    Aus der relativ JS-losen Hüfte: Vielleicht liegt's an der doppelten Verwendung? Benenne mal die Übergabewerte um und probiere es nochmal aus.

    LG Orlando

    1. Hi, Elya

      onMouseOut="wechsel('container1','facts_o',facts_o)
                                           ^^^^^^^  ^^^^^^^
      Aus der relativ JS-losen Hüfte: Vielleicht liegt's an der doppelten Verwendung? Benenne mal die Übergabewerte um und probiere es nochmal aus.

      Hm, das eine ist ein String, das andere ein Objekt. Daran liegts eher nicht - jedenfalls nicht an dieser Stelle.

      Aber später wird ja document.images['facts_o'] referenziert, was mit facts_o (dem selbsterstellten Bildobjekt) konkurrieren könnte.

      Insofern ist es sicherlich eine gute Idee, die Namen der Bildlinks völlig unabhängig von den eigenen Bildobjekten zu benennen. Ein simpler Prefix reicht ja schon:

      <img name="facts">
      Und als Objekte:
      facts_o(ver)
      facts_n(ormal)

      Das ist logisch durchdacht. :)

      - Sven Rautenberg

      1. Hallo Ihr 2,
        genau das war es - die beiden gleichen Bezeichnungen für Name und Objekt waren das Problem.

        Ich hatte zwar schonmal mit anderen Objektnamen rumprobiert, aber anscheinend den Gedanken nicht ganz zu Ende gedacht. Irgendwann herrschte auch nur noch Verwirrung... ;-)

        Vielen Dank!

        Grüße aus Ehrenfeld,
        Elya

  2. Moin!

    ich glaube es verstanden zu haben und trotzdem läuft es nicht - vielleicht einfach nur ein Brett vor dem Kopf? Ich komme nicht dahinter (http://forum.de.selfhtml.org/archiv/2002/5/11273/#m63131) hat mir schon geholfen.

    Hehe. :)

    Der erste Bildwechsel findet korrekt statt, aber bei mouseout passiert garnichts - in keinem Browser. Und dummerweise auch keine Fehlermeldungen in der Konsole...

    Dein Skript sieht gut aus. Du solltest mal mit alert()-Einfügungen testen, ob die Funktion aufgerufen wird, und was für Variablen übergeben werden.

    Bin ich blind? Oder was passiert hier?

    Vermutlich ein dummer, logischer Fehler. Logikfehler sind die blödesten, weil das Programm fehlerfrei läuft, aber einfach nicht das erwartete tut.

    - Sven Rautenberg