Kann man alle IDs einer Seite kontrollieren
Stefan Welscher
- javascript
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?
Hallo,
<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.
<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
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
Hi,
var y = x.getElementsByTagName("*");
Das "*" wird allerdings nicht von allen Browsern unterstützt!
Gruß, Cybaer
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