Julia Winkler: Unter-Navi aufklappen

Hallo!

Ich habe einen Link, bei dem bei einem onMouseOver-Ereignis, eine Unternavi bestehend aus 4 Unterpunkten aufklappen soll. Eigentlich alles auch nicht schwer, nur ich bekomme aus mir unerklärlichen Gründen die Fehlermeldung, daß in der Zeile des Funktions-Aufrufes ein Objekt erwartet wird. Meiner Meinung nach bekommt er das aber. Aber schaut doch am besten selbst. Denn ich bin inzwischen ziemlich ratlos:

-------------Positionierung des Layers------------------------

<style type="text/css"><!--
.submenu {position:absolute; height:90px; width:120px; z-index:10; visibility:hide; visibility:hidden;}
--></style>

--------------JavaScript Definitionen--------------------------

<SCRIPT language=javascript type=text/javascript>

<!--
var nn=(document.layers?true:false),ie=((document.all&&(parseFloat(navigator.appVersion.substring(0,1))>=4))?true:false);

function showLayer(id){if(nn)document.layers[id].visibility="show";else if(ie)document.all[id].style.visibility="visible";}

function openSubMenu(id) {
  showLayer("laySubmenu"+id);
}
}

// -->
</SCRIPT>

------------Der Aufruf---------------------------

<a href="#" onMouseOver="openSubMenu(3)">Link</a>

-----------Die Unternavi, die aufklappen soll------------

<div id="laySubmenu3" class="submenu" style="left:159px; top:45px;">
Link1
Link2
etc.
</div>

.................................................................

Hat jemand Vorschläge, was ich verkehrt mache??

Danke Julia.

  1. tach,

    Ich ... bekomme aus mir unerklärlichen Gründen die Fehlermeldung, daß in der Zeile des Funktions-Aufrufes ein Objekt erwartet wird. Meiner Meinung nach bekommt er das aber.

    Nein, bekommt er nicht.
    Du willst mit

    showLayer("laySubmenu"+id);

    das angesprochene Navigantions-DIV aufklappen. Das hat bereits den Namen (id) "laySubmenu3", und dein Script macht daraus "laySubmenulaySubmenu3". Das kann es nicht finden.
    Vorschlag: Du willstwahrscheinlich mehrere "laySubmenu" haben mit verschiedenen Nummern. Dann nimmst du dafür zusätzliche Variablen. Das kann etwa so aussehen:
    var schicht = "laySubmenu";
    function zeigen(nummer) {
    eval('"' + schicht + nummer +'"');
    }

    außerdem: weil du "layers" schreibst, kann dein Navigationsmenü in Netscape 6 nicht funtionieren. Nimm stattdessen getElementById.

    Christoph S.

    1. tach,

      Ich ... bekomme aus mir unerklärlichen Gründen die Fehlermeldung, daß in der Zeile des Funktions-Aufrufes ein Objekt erwartet wird. Meiner Meinung nach bekommt er das aber.

      Nein, bekommt er nicht.
      Du willst mit

      showLayer("laySubmenu"+id);
      das angesprochene Navigantions-DIV aufklappen. Das hat bereits den Namen (id) "laySubmenu3", und dein Script macht daraus "laySubmenulaySubmenu3". Das kann es nicht finden.

      Ich sehe nicht, wo meine Navigation diesen Teil daraus machen soll. Denn die Variable id enthält nur Nummer zw. 0 bis 6. Sprich das<was bei der Funktion showLayer als Parameter ankommt, ist die richtige Bezeichnung des Layers. Nämlich laySubmenu3. Wo wird das denn doppelt zusammengebaut??

      außerdem: weil du "layers" schreibst, kann dein Navigationsmenü in Netscape 6 nicht funtionieren. Nimm stattdessen getElementById.

      Christoph S.

  2. Servus,

    function openSubMenu(id) {

    showLayer("laySubmenu"+id);
    }
    } <- Diese Klammer scheint mir überflüssig.

    Viele Grüße

    Oskar