node Syntax-Problem
fr@gma
- javascript
Hallo,
ich habe da ein Problem untergeornete Listen anzusprechen.
Und zwar möchte ich diesen untergeordneten Listen Attribute zuweisen.
HTML-Listenbaum
<ul id="hauptnavigation">
<li><a href=""></a>
<ul>
<li></li>
<li></li>
</ul>
</li>
<li><a href=""></a>
<ul>
<li></li>
<li></li>
</ul>
</li>
</ul>
Nun möchte ich die Unterlisten im Javascript so ansprechen:
navi = document.getElementById("hauptnavigation").firstChild;
while (navi != null) {
if(navi.nodeName == "LI")
{
menu = navi.getElementsByTagName("ul")[0];
menu.setAttribute(...);
}
navi = navi.nextSibling;
Leider habe ich da einen Fehler drin, da mir der Firefox immer anzeigt, dass "menu" nicht definiert ist.
Wo hab ich denn da einen Denkfehler?
Vielen Dank für Eure Antworten.
fr@gma
Hi,
<ul id="hauptnavigation">
<li><a href=""></a>
navi = document.getElementById("hauptnavigation").firstChild;
Leider habe ich da einen Fehler drin, da mir der Firefox immer anzeigt, dass "menu" nicht definiert ist.
natürlich. Die Whitespace-Node zwischen dem <ul> und dem <li> ist weder null, noch hat sie Nachfahren.
Cheatah
Hi,
<ul id="hauptnavigation">
<li><a href=""></a>
navi = document.getElementById("hauptnavigation").firstChild;
Leider habe ich da einen Fehler drin, da mir der Firefox immer anzeigt, dass "menu" nicht definiert ist.natürlich. Die Whitespace-Node zwischen dem <ul> und dem <li> ist weder null, noch hat sie Nachfahren.
Was meinst Du mit Whitespace-Node?
Ich habe mir die Kindknoten von "hauptnavigation" ausgeben lassen.
Die <li>-Tags von "hauptnavigation" werden alle erkannt.
Der Firefox erkennt zwar auch die Zeilenumbrüche aber das fange ich ja mit if(navi.nodeName == "LI") ab.
Cheatah
Wer das Glück hat, von Cheatah eine Antwort zu bekommen, tut gut daran, sie sorgfältig zu lesen!
Der Whitespace-Node ist ein Text-Node, der den Umbruch zwischen <ul> und <li> speichert. Er hat keine Child-Nodes.
Versuche es lieber mit document.getElementById('hauptnavigation').getElementsByTagName('li')[0] anstelle von firstChild.
Gruß, LX
Grundlage für Zitat #1127.
Hallo Cheatah und hallo LX,
vielen Dank für Eure Antworten, habe ich vorhin glatt vergessen, sorry!
Wer das Glück hat, von Cheatah eine Antwort zu bekommen, tut gut daran, sie sorgfältig zu lesen!
Der Whitespace-Node ist ein Text-Node, der den Umbruch zwischen <ul> und <li> speichert. Er hat keine Child-Nodes.
Vielleicht habe ich ja etwas falsch verstanden, ich habe mir in der "WHILE-Schleife" mal alle Textknoten auflisten lassen.
Der Firefox berücksichtigte zwar Zeilenumbrüche, erkennt aber auch alle <li>-Tags der <ul>. Ich habe bei meinem ersten Posting die Listenelemente ja auch nur eingerückt, damit das übersichtlicher wird.
Versuche es lieber mit document.getElementById('hauptnavigation').getElementsByTagName('li')[0] anstelle von firstChild.
Habe ich gerade mal probiert, das Problem besteht weterhin.
Ich denke mal bei "menu = navi.getElementsByTagName("ul")[0];" ist irgendetwas falsch oder?
Gruß, LX
Gruß fr@gma
Hi,
Versuche es lieber mit document.getElementById('hauptnavigation').getElementsByTagName('li')[0] anstelle von firstChild.
Habe ich gerade mal probiert, das Problem besteht weterhin.
Ich denke mal bei "menu = navi.getElementsByTagName("ul")[0];" ist irgendetwas falsch oder?
nicht nur zitieren, sondern auch lesen.
Cheatah
Hi Cheatah,
ich habe das wie gesagt ausprobiert:
navi = document.getElementById('hauptnavigation').getElementsByTagName('li')[0];
zahl = 0;
while (navi != null) {
if(navi.nodeName == "LI")
{
menu = navi.getElementsByTagName('ul')[0];
zahl = zahl + 1;
menu.setAttribute("id", "test" + zahl);
alert(menu.getAttribute("id"));
}
navi = navi.nextSibling;
}
Ich bekomme nun für alle Listen die Alert-Meldung (test1, test2).
Jedoch bekomme ich immer angezeigt, das 'menu' nicht definiert ist.
Da muss ja bei der Deklaration von 'menu' irgendwas falsch sein, oder?
Ich frage dann eben mal anders, wie muss ich die verschachtelten <ul> ansprechen?
Ich weiß es leider nicht, sonst würde ich ja nicht fragen.
Viele Grüße
fr@gma
Ich nochmal, falls wieder mal jemand so ein Problem hat.
Ich habe es hinbekommen.
Die Fehlermeldung kam nur, da ein Listenelement der 'hauptnavigation' keine untergeordnete Liste besitzt.
Man, manchmal steht man sich echt selbst im Weg.
An alle die sich damit beschäftigt hatten, nochmals VIELEN DANK!!!
Viele Grüße
fr@gma
Wer das Glück hat, von Cheatah eine Antwort zu bekommen, tut gut daran, sie sorgfältig zu lesen!
Definiere Glueck!
;)