IE-Absturz durch Rekursion

akkie

Erfahrenes Mitglied
Hallo

Ich habe ein Problem was mich zur Verzweiflung bringt.

Ich möchte ein Javascript Menü bauen. Leider stürzt mir der IE andauernd ab. Im Firefox klappt alles.

Hier mal der Code

PHP:
this.open = function(source)
	{
		var element =  typeof(source.tagName) == 'string' ? source : this.getElement(source).parentNode;
				
		if (element.hasChildNodes()) {
			
			for (i = 0; i < element.childNodes.length; i++) {
							
				if (element.childNodes[i].tagName == 'UL') {
					element.childNodes[i].style.display = 'block';
				} else if (element.childNodes[i].tagName == 'DIV') {
					this.open(element.childNodes[i]);
				}
			}
		}
	}

Source ist das erste mal ein Event das zweite mal der div Knoten. Beim Div bleibt der IE aber immer hängen. Kennt vielleicht jemand das Problem und weiß wie man es lösen kann. Vielen Dank schon mal.

Mfg Akkie
 
Warum der IE da nun abstürzt, hab ich nicht probiert... wenn der Ausgangspunkt ein DIV ist, dann kannst du das Ganze aber auch einfacher haben:

Code:
for (i = 0; i < divElement.getElementsByTagName('ul').length; ++i)
 {
    divElement.getElementsByTagName('ul')[i].style.display='block';  
 }
...da sollte nichts mehr crashen :)
 
Es ist nicht immer ein Div als Ausgangspunkt.

Das Menu soll auf der letzten Instanz eine JS-Scrollbar bekommen. Nur da ist ein DIV.


PHP:
<ul>
   <li><span>Menüpunkt</span>
      <ul>
         <li><span>Untermenüpunkt</span>
            <div>
               <ul>
                  <li>Letzte Instanz</li>
                  <li>Letzte Instanz</li>

Die Methode wollte ich halt benutzen um alle Menüpunkte aufzuklappen.

Ich habe mir jetzt erst mal beholfen indem ich überall vor das ul ein div gesetzt habe.
Das ist aber nicht Sinnder Sache.

Mfg Akkie
 
ist eigentlich egal, obs immer ein DIV ist... solange das divElement ein Zeiger auf das Elternelement ist, kannst du mit meiner Methode alle enthaltenen UL manipulieren
 
Klingt Logisch.

Werd es heute Abend mal einbauen und sehen ob es den gewünschten Effekt bringt.

Vielen Dank für die schnelle Hilfe.:-)

Mfg Akkie
 

Neue Beiträge

Zurück