Kai345: Li Menu markieren

Beitrag lesen

Grütze .. äh ... Grüße!

Wie geht das denn? Sorry bin noch newbie. hab so versucht:

for (var i = 0; i < document.getElementsByTagName("li").length; i++)  {
  if (ele)

Das geht nicht. Du übergibst ja der Funktion die Variable "ele" als Argument, daher hat diese Variable immer einen Wert und die if-Bedingung ist erfüllt. Also wird der else-Zweig niemals ausgeführt.

Du mußt also den aktuellen Wert der Schleife mit dem übergebenen Element vergleichen.

var li_liste = document.getElementsByTagName("li");  
for (var i = 0; i < li_liste.length; i++)  {  
  li_liste[i].style.backgroundColor = "zartrosamithellblauentupfen";  
  if (ele.parentNode === li_liste[i]) {  
     li_liste[i].style.backgroundColor = "silver";  
  }  
}

Nächstes Problem: das scheitert genau in dem Moment, wenn du mehrere Listen auf der Seite hast und die anderen Listen nicht beeinflusst werden sollen, weil document.getElementsByTagName("li") natürlich ALLE <li> erfasst.

Aufgrund der Listen-Struktur (hier wg. Übersicht ohne schließende Tags)

<ul>  
  <li>  
    <a>  
  <li>  
    <a>

kannst du das aber auch lösen: die <li> Tags, die du ändern willst, sind alle unterhalb des <ul>-Tags angeordnet. Wie du ja schon weißt, kommst du von deinem angeklickten Link <a> mit parentNode zu dem entsprechenden <li>. Um nun zu <ul> zu gelangen, mußt du das gleich nochmal machen, also ele.parentNode.parentNode

Damit können wir die <li>-Kollektion nun einschränken:

statt document (was ALLE <li> beinhaltet)

var li_liste = document.getElementsByTagName("li");

benutzt du

var li_liste = ele.parentNode.parentNode.getElementsByTagName("li");

(so, und nun hoffe ich nur noch, daß ich mich jetzt nirgendwo vertan habe *g*)


Kai

--
Der vertuschte Gefahrstoff: Dihydrogenmonoxid
ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|