Chräcker Heller: bei rollover eine andere Grafik ändern

Hallo,

ich möchte bei "überfahren" einer frei positionierten Grafik eine zweite, ebenfalls frei positionierte Grafik auswechseln. Meine Seite sieht folgendermassen aus:

<HTML>
<HEAD>
<script language="JavaScript">
<!--
Normal1 = new Image();
Normal1.src = "bild1.gif";
Highlight1 = new Image();
Highlight1.src = "bild2.gif";
function Bildwechsel(Bildnr,Bildobjekt)
{
window.document.images[Bildnr].src = Bildobjekt.src;
}
//-->
</script>
</HEAD>
<BODY>
<div style="position:absolute; top:50px; left:20px" onMouseOver="Bildwechsel(1,Highlight1)" onMouseOut="Bildwechsel(1,Normal1)">
<IMG SRC="ausloeserbild.gif" HEIGHT="27" WIDTH="125" border="0">
</DIV>
<div style="position:absolute; top:106px; left:235px" >
<IMG SRC="bild1.gif" HEIGHT="94" WIDTH="108">
</DIV>
</BODY>
</HTML>

Beim Explorer funktioniert dies. Beim Netscape nicht. (Obwohl sowohl das freie positionieren an sich und das obige JavaScript-Program ansich bei beiden Browsern funktioniert....)

Wer weiß Rat? (oder weiß, wo welcher steht?)

Chräcker

  1. Hallo Chräcker

    <div style="position:absolute; top:50px; left:20px" onMouseOver="Bildwechsel(1,Highlight1)" onMouseOut="Bildwechsel(1,Normal1)">
    <IMG SRC="ausloeserbild.gif" HEIGHT="27" WIDTH="125" border="0">
    </DIV>

    hier ist Problem Nr. 1: der Navi interpretiert omMouseOver etc. nur innerhalb eines a-Tags bzw. area-Tag. Den mußt du also einbinden, etwa so wie hier:

    <div ...><a href="#" onMouseOver="Bildwechsel(1,Highlight1)" onMouseOut="Bildwechsel(1,Normal1)"><IMG SRC="ausloeserbild.gif" HEIGHT="27" WIDTH="125" border="0"></a></div>

    da dein Bild auch in einem div-Tag steckt mußt du zusätzlich eine Fallunterscheidung in der Funktion für den Navi durchführen und das Bild im Div dann mit document.divname.document.images... ansprechen.

    Viele Grüße

    Antje

    1. Hallo Antje,

      danke für die schnelle Antwort. Da HTML für mich relativ neu ist, habe ich jetzt etwas zu knabbern ;-)

      Du schreibst:

      und das Bild im Div dann mit
      document.divname.document.images...
      ansprechen.

      ich nehme an, mit divname meinst Du die von mir noch zu vergebende Div-ID. Allerdings habe ich in meinen Document-Objekt Beschreibungen keinen Hinweis auf eine document-Eigenschaft "id" gefunden (?) erst nach dem Unterobjekt "all" kann ich "id" benutzen, aber spätestens jetzt ist schon ein Knoten in meinem Hirn....

      Also dachte ich, zurück zu Deiner Erklärung: document, dahinter die Div-ID, und dahinter sogar nochmal document? Und dann images mit der dann folgenden id in den eckigen Klammern? Soll es dann lauten:

      im Body:

      <div id="tauschbild" style="position:absolute; top:106px; left:235px">
      <IMG SRC="bild1.gif" HEIGHT="94" WIDTH="108">
      </DIV>

      und oben im Script lautet die Funktion dann (?)

      document.tauschbild,document.images[Bildnr].src = Bildobjekt.src;

      ;-)))) das funktioniert definitiv nicht im Navigator,;-)))) aber warscheinlich habe ich auch alles falsch geschrieben was man falsch schreiben kann ;-/ Also bitte nochmal: Hilfe....

      Chräcker

      1. Hallo Antje,

        danke für die schnelle Antwort. Da HTML für mich relativ neu ist, habe ich jetzt etwas zu knabbern ;-)

        das hier ist aber JavaScript :-)

        document, dahinter die Div-ID, und dahinter sogar nochmal document?

        Ja, genauso so und zwar deshalb, weil der Navi den Div-Tag als Layer interpretiert und als eigenes Dokument ansieht. Deshalb das document doppelt.

        im Body:

        <div id="tauschbild" style="position:absolute; top:106px; left:235px">
        <IMG SRC="bild1.gif" HEIGHT="94" WIDTH="108">
        </DIV>

        »»

        und oben im Script lautet die Funktion dann (?)

        document.tauschbild,document.images[Bildnr].src = Bildobjekt.src;

        ;-)))) das funktioniert definitiv nicht im Navigator,;-)))) aber warscheinlich habe ich auch alles falsch geschrieben was man falsch schreiben kann ;-/ Also bitte nochmal: Hilfe....
        Chräcker

        sorry, war mein Fehler, ich hatte vergessen dir mitzuteilen, daß der Navi die Bilder dann auch neu zu zählen beginnt. In jedem div beginnt es wieder bei 0. Ich löse es immer so, daß ich den Bildern einen Namen verpasse und diesen übergebe. Hast du nur ein Bild in jedem Div schreibe einfach
        document.tauschbild,document.images[0].src = Bildobjekt.src;

        Viele Grüße

        Antje

        Viele Grüße

        Antje

        1. document.tauschbild,document.images[0].src = Bildobjekt.src;

          Scheint nicht mein Tag zu sein :-)

          document.tauschbild.document.images[0].src = Bildobjekt.src;

          nicht Komma nach dem Tauschbild, sondern Punkt.

          Antje

          1. Hallo Antje

            Scheint nicht mein Tag zu sein :-)

            nicht Komma nach dem Tauschbild, sondern Punkt.

            nein, der Fehler lag bei mir. Ich hatte aufersehen das Komma reingeschmugelt, Du hattest es dann nur zitiert.
            Ersteinmal: vielen Dank, und ja, es funktioniert (auch in meinem Hirn ;-) ) Hoffentlich letzte Frage zu diesem Thema von mir: Warum funktioniert es nicht, wenn ich anstelle der "fest" geschriebenen div-ID "tauschbild" in der Zeile:

            document.tauschbild.document.images[0].src = Bildobjekt.src;

            eine Variabel setze? Ich dachte mir es so:

            function Bildwechsel(Divname,Bildnr,Bildobjekt)
            {document.Divname.document.images[0].src = Bildobjekt.src; }

            und selbige rufe ich dann unter anderem so auf:

            onmouseover="Bildwechsel(Tauschbild,2,Highlight1)"

            (wobei bei der Netscapevarainte die "2", und bei der Explorervariante das "Tauschbild" ignoriert wird. Ehrlich, auch hier habe ich jetzt alles was ich über Variabeln finden kann durchgelesen, und so dumm kann doch mein Versuch nicht sein ;-/ ?

            Danke nochmals und sorry für das "komma" ;-)

            Chräcker

            1. nein, der Fehler lag bei mir. Ich hatte aufersehen das Komma reingeschmugelt, Du hattest es dann nur zitiert.

              ich hatte es aber gleich bemerkt und dann vor dem Abschicken vergessen zu korrigieren :-)

              function Bildwechsel(Divname,Bildnr,Bildobjekt)
              {document.Divname.document.images[0].src = Bildobjekt.src; }

              Das Problem liegt in der Ansprache mit
              document.Divname.document.images[0].src wird ein div mit dem Namen Divname gesucht und nicht die Variable Divname interpretiert.

              Du mußt schreiben

              document[Divname].document.images[0].src

              dann klappt es auch und im Aufruf

              onmouseover="Bildwechsel('Tauschbild',2,Highlight1)"

              Den Divnamen also als Text übergeben. Sonst sucht der Browser ein Objekt mit dem Namen Tauschbild. :-)

              Viel Erfolg

              Antje

              1. Hallo Antje,

                endlich klapt alles, 1000 Dank.

                mit document.Divname.document.images[0].src wird ein
                div mit dem Namen Divname gesucht

                und wie man aus einem "Namen" eine Variabel macht hatte ich nicht gefunden. (Ich hatte es einfach mit "deklarieren" versucht, also

                var jetztaber=divname           )

                Ich hatte sogar (für mich!) die eckigen Klammern benutzt, nur dummerweise immer noch mit einem Punkt zwischen Document und der Variabel.

                Den Divnamen also als Text übergeben.

                auch hier gelernt, wie man aus einem "Wort" einen Textstring macht, nochmals danke...

                Chräcker