Stefan Welscher: Kann man alle IDs einer Seite kontrollieren

Hallo nochmal,
hab jetzt evtl. nen Ansatz für mein Menü-Problem gefunden.
Dazu müsste ich aber wissen wie ob, und wie ich alle IDs einer Seite ansprechen kann.
Also man Stelle sich ein Menü vor:

Haupt ID1
Unter1 ID1_1
Unter2 ID1_2

Haupt ID2
Unter1 ID2_1
Unter2 ID2_2

Ich würde jetzt gern eine mit einer Javascript-Funktion prüfen, ob die einzelnen IDs in ein bestimmtes Muster passen. Dazu muss ich aber jede ID einzeln Prüfen. Da ich das Menü über PHP erstelle kann ich nicht im vorraus sagen, wie viele Menüs es gibt und wie stark diese verschachtelt sind. Gibt es eine Möglichkeit evtl. mit einer FOR-Schleife etc.... alle IDs nacheinander zu prüfen?

  1. Hallo,

    Annahme:

    <div id='menue'>
      <!-- Menüstruktur -->
    </div>

    #####################################################

    Dann hast Du ab dem Element document.getElementById('menue') eine Menge (Datenfeld) an Kindelementen, die sich hervorragend rekursiv auf ihre IDs prüfen lassen.

    Beispiel:

    <div id='menue'>
      <ul>
        <li id='ID1'>Haupt
          <ul>
            <li id='ID1_1'>Unter1</li>
            <li id='ID1_2'>Unter2</li>
          </ul>
        </li>
        <!-- usw. -->
      </ul>
    </div>

    #####################################################

    Somit sind Kindelemente bspw. durch

    var x=document.getElementById('menue')
    for(var i=1;x.getElementById('ID'+i);i++)
       {
       mach_was_mit(x.getElementById('ID'+i))
       }

    erfassbar.
    Alles weitere ist dann nur noch eine Funktion, die rekursiv auf die von Dir neuzuwählenden(!) IDs zugreift.

    Haupt ID_1
      Unter ID_1_1
      Unter ID_1_2
    Haupt ID_2
      Unter ID_2_1
      Unter ID_2_2

    (so sind sie rekursionsfreundlicher ;)

    Gruß aus Berlin!
    eddi

    --
    wahsaga (http://forum.de.selfhtml.org/archiv/2004/9/90932/#m546295)
    > vielleicht könnte man für heteros eine "strict"-DTD zu grunde legen [...oder...] eine darauf anwendbare CSS-eigenschaft 'sex'
    In dem Sinne: Ein -Hoch- auf die Liebe zwischen Menschen! ;)
    1. Somit sind Kindelemente bspw. durch

      var x=document.getElementById('menue')
      for(var i=1;x.getElementById('ID'+i);i++)
         {
         mach_was_mit(x.getElementById('ID'+i))
         }

      erfassbar.

      Ist alles ganz gut und schön, aber doch einwenig verschraubt.
      Folgendes scheint mit angebrachter zu sein:

      var x = document.getElementById('menue');
      var y = x.getElementsByTagName("*");

      for (i in y)
        {
        mach_was_mit(y[i])
        }

      Gruß
      Avalon

      1. Hi,

        var y = x.getElementsByTagName("*");

        Das "*" wird allerdings nicht von allen Browsern unterstützt!

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    Gibt es eine Möglichkeit evtl. mit einer FOR-Schleife etc.... alle IDs nacheinander zu prüfen?

    Die verwendeten Tags sind ja bekannt. Also kannst Du alle mit getElementsByTagName() abklappern und die IDs mit getAttribute() auslesen.

    Ich habe dieses Verfahren in einem ähnlichen Fall (IDs mit "variablem", nicht fortlaufend numerischem Anhang) verwendet. Kannst Du Dir ja mal anschauen: http://Coding.binon.net/Toggle

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!