Daniel Zander: Hilfe! - [ ImageMap Problem mit onMouseOut u. onClick ]

Hallo Forumteilnehmer,
habe 2 Probleme mit folgender ImageMap + Javascript(Auszug):

----> INFO : 2 Bilder mit Namen "a"=Bild zum jew. Bereich und "b"=Navigation
<img name="a" src="start.gif" width="100" height="20">
<img name="b" src="nav1.gif" width="200" height="20" usemap="#Map" border="0">

----> INFO : die Map als Navigationsleiste
<map name="Map">
<area target="main" shape="rect" coords="10,5,21,16" href="start.html"
onMouseOver="b.src='nav1.gif';"  onMouseOut="oldnav();" onClick="clk1();">

<area target="main" shape="rect" coords="40,4,51,16" href="ueber.html"
onMouseOver="b.src='nav2.gif';"  onMouseOut="oldnav();" onClick="clk2();">
</map>

----> INFO : Funktion bei onClick
function clk1()
{
  document.a.src = "start.gif";
}

function clk2()
{
  document.a.src = "ueber.gif";
}

----> INFO : Funktion bei onMouseOut
function oldnav()
{

var analyseframe = parent.main.location.pathname;

switch (analyseframe)
{
case:
if (analyseframe = "start.html")
document.b.src = "nav1.gif";
break;
case:
if (analyseframe = "ueber.html")
document.b.src = "nav2.gif";
break;
default:
document.b.src = "nav1.gif";
break
}

Meine Fragen:

  1. zu onClick
    Warum funktioniert die Anweisung "onClick="a.src='start.gif';" im area-tag direkt, aber die Funktion
    von nicht?!  Muss es aber wg. dem Bug vom NS-Mac per Funktion machen.

  2. zu onMouseOut
    Ich moechte anhand der analyse des Hauptframes "main" die Navigationsleiste immer im bezug
    zum Inhalt des main-frames haben. Damit der User anhand der Navigationsleiste erkennt,wenn er mit
    Maus wieder vom Link geht, wo er gerade ist.

Was mache ich falsch? (Bestimmt zuviel, ich geb mir gleich die Kugel, hab schon stundenlang self-
html, archiv, forum durchforstet.)

Den, der mir helfen kann, liebe ich jetzt schon.
Gruss, trauriger Daniel

  1. Hallo Daniel,

    mit JavaScript sprichst du Bilder im Dokument über

    document.images['bildname']

    an. Um das Bild durch ein anderes zu ersetzen also:

    document.images['bildname'].src='bild2.gif';

    Also:
    function clk1()
    {
      document.images['a'].src = "start.gif";
    }

    function clk2()
    {
      document.images['a'].src = "ueber.gif";
    }

    Die Funktion oldnav() funktioniert nicht, weil du einen Fehler in der switch-Anweisung hast.
    Außerdem enthält analyseframe den gesamten Pfad, nicht nur den Dateinamen.

    Es muß heißen:

    function oldnav()
    {

    var analyseframe = parent.main.location.pathname;
    analyseframe=analyseframe.substring(analyseframe.lastIndexOf("/")+1,analyseframe.length);
    switch (analyseframe)
    {
       case "start.html":
          document.images['b'].src = "nav1.gif";
          break;
       case "ueber.html":
          document.images['b'].src = "nav2.gif";
          break;
       default:
          document.images['b'].src = "nav1.gif";
          break
    }
    }

    analyseframe.substring(analyseframe.lastIndexOf("/")+1,analyseframe.length)
    holt einen Teilstring aus dem gesamten Pfad ab dem letzten Slash im Pfad.

    Für weitere Fragen kannst du mir gerne mailen.

    Gruß
    Brigitte

    1. Tausend Dank Brigitte !!!!

      Das Problem mit dem NS 4.7 Mac habe ich herausgefunden!
      Beim onClick-Event zeigt der Browser nur Images an, die
      vorher in den Cache geladen wurden! Alle Anderen haben
      damit kein Problem. NS mal wieder ;(

      Eine Frage habe ich noch:
      wie sage ich dem onMouseOut Befehl via setTimeOut das
      er erst nach ca. 1 sec ausgefuehrt werden soll, damit
      die Navigation beim ueberfahren mit der Maus nicht so
      "zappelt" ?

      Gruss Daniel