Edgar Ehritt: Aktuelle Seite in der Navi hervorheben >> Problem bei Submenü

Beitrag lesen

Hallo Julian,

zunächst eine Sache der Strukturierung: document.getElementsByTagName("a") erstellt eine Node-Liste aller Verweise eines Dokuments. Das ist, wenn Du auch innerhalb des 'eigentlichen' Inhalts Verweise hast, nicht sehr performant - ja kann im schlimmsten Fall sogar zu Kollisionen führen. Günstiger wäre es da ein das Menü umspannendes Element zu haben, in dem (nur) die Verweise des Menüs in der späteren Scriptverarbeitung durchsucht werden.

<element id="menu">  
 <!-- Menüverweise -->  
</element>  
<!-- Dokumenteninhalt -->
  
var liste=document.getElementById("menu").document.getElementsByTagName("a");  
var anz  =liste.length;  
  

> for (i=0; i<anz; i++)  
> {  

       if (liste[i].href == location.href);  

> }

Wenn die aktuelle Seite sich in der Navigation im Submenü befindet soll NUR der "Hauptlink" hervorgehoben werden.
Ich habe es schon versucht, aber ich komme nicht sehr weit.

Auch das ist nur eine Frage der Struktur und der daraus resultierenden Handhabung:

<ul id="menu">  
 <li>  
  <a href="hautmenu.htm" title="was weiß ich">WWI</a>  
  <ul>  
   <li>  
    <a href="submenu.htm">UM</a>  
   </li>  
   <!-- Andere Untermenüeinträge -->  
  </ul>  
 </li>  
 <!-- Andere Menüeinträge -->  
</ul>

Hierbei hat der Verweis im Untermenü innerhalb des DOM eine Beziehung zu seinem Hauptmenüverweis von liste[i].parentNode.parentNode.parentNode.getElementsByTagName('a')[0].

Wie Du siehst, ist hierbei wichtig, Deine genauen Vorstellungen vom Menü, also der Struktur, zu kennen, um die Beziehungen herzustellen!

Gruß aus Berlin!
eddi

--
“Um etwas zu erschaffen mit gutem Erfolg, muß man aufhören das zu sein, was man ist; um ganz das zu werden, was man hervorbringen will.”