Philippo: Problem mit ul und li

Halöchen

Ich habe ein Menü mit folgender Struktur

<ul id="menu">
  <li>
    Menu1
    <ul>
      <li>Subitem1</li>
      <li>Subitem2</li>
    </ul>
  </li>
  <li>
    Menu2
    <ul>
      <li>Subitem1</li>
      <li>Subitem2</li>
    </ul>
  </li>
</ul>

Nun möchte ich eine Funktion schreiben dir mir ein einzelnen li Ausblenden. Das hier funktioniert leider nicht:

document.getElementsByTagName("ul")[0].firstChild.style.diplay='none';

Warum?
Gruß
philippo

  1. Hi,

    Nun möchte ich eine Funktion schreiben dir mir ein einzelnen li Ausblenden. Das hier funktioniert leider nicht:

    document.getElementsByTagName("ul")[0].firstChild.style.diplay='none';

    Warum?

    Weil das firstChild nicht das ist, was du annimmst.
    Auch Textknoten sind ChildNodes, und auch Whitespace zwischen Elementen ist ein Textknoten (das sieht nur der IE anders).

    Warum greifst du nicht direkt ueber getElementsByTagName auf die LIs zu?
    Das kannst du auch unterhalb des UL-Objektes machen, wenn dich nur dessen LIs interessieren.

    MfG ChrisB

    1. Hi

      Warum greifst du nicht direkt ueber getElementsByTagName auf die LIs zu?

      so geht es auch nicht :-(

      document.getElementsByTagName("li")[0].style.diplay='none';

      Gruß
      herbie

      1. Hallo,

        Warum greifst du nicht direkt ueber getElementsByTagName auf die LIs zu?
        so geht es auch nicht :-(
        document.getElementsByTagName("li")[0].style.diplay='none';

        nein, du hast auch den ergänzenden Hinweis ignoriert oder überlesen:

        Das kannst du auch unterhalb des UL-Objektes machen, wenn dich nur dessen LIs interessieren.

        Du suchst dagegen die li-Elemente nicht innerhalb eines bestimmten ul, sondern im ganzen Dokument - und greifst dann immer auf das erste li-Element im Dokument zu.

        So long,
         Martin

        --
        Schildkröten können mehr über den Weg berichten als Hasen.
      2. Hi,

        document.getElementsByTagName("li")[0].style.diplay='none';

        zusätzlich zum bereits gesagten: die Eigenschaft heißt display, nicht diplay.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. Weil das firstChild nicht das ist, was du annimmst.
      Auch Textknoten sind ChildNodes, und auch Whitespace zwischen Elementen ist ein Textknoten (das sieht nur der IE anders).

      Und Opera.

      1. [latex]Moin![/latex]

        Weil das firstChild nicht das ist, was du annimmst.
        Auch Textknoten sind ChildNodes, und auch Whitespace zwischen Elementen ist ein Textknoten (das sieht nur der IE anders).

        Und Opera.

        Na, das muß dann aber schon eine *extrem* alte Version sein.

        Bei

        <ul id="nav">  
          <li class="skip">
        

        liefert

        var f = document.getElementById("nav").firstChild  
        alert(f.nodeType)
        

        liefert mir Opera bis zurück zur Version 7.54 (2005) als Rückgabe den Wert 3

        Cü,

        Kai

        --
        een eigen huis, een plek onder de zon
        en altijd iemand in de buurt die van me houden kon
        toch wou ik dat ik net iets vaker, iets vaker simpelweg gelukkig was
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|]