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*)
Cü
Kai
Der vertuschte Gefahrstoff: Dihydrogenmonoxid
ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|