Div Layer via Schleifen ausblenden

JavaScript und ich ... eine unendliche Geschichte ...
Das Problem scheint wieder so derart simpel zu sein aber ich seh' den Wald vor lauter Bäumen nicht mehr, Ein Ur-altes Problem :
Div-Layerausblenden. Das Ausblenden an sich stellt auch kein Problem dar, allerdings wenn ich alle Container bis auf einen mittels Schleife ausblenden will, dann haperts.

Die Div-Layer haben als ID einen Bezeichnung sowie eine Nummer
(einDivLayer1, einDivLayer2, einDivLayer3 etc. )
HTML:
<div ID="einDivLayer1" >
Über die Funktion HideSubMenu wird die ID übermittelt welche nicht ausgeblendet werden soll.


Code:
       function HideSubMenu(containerNo){
	      for(i=0;i<10;i++){
		 if( i != containerNo){
			document.getElementById('einDivLayer'+i).style.display = 'none';
			}
		}
	}

Das ganze läuft in einer Schleife - eben um alle anderen Layer erfassen zu können. Allerdings tut sich dahingehend gar nichts.
Ich habe mir mal mittels alert ausgeben lassen ob überhaupt Werte inkrementiert werden aber daran liegt es nicht.
Wenn ich die Layer direkt anspreche
Code:
document.getElementById('einDivLayer1').style.display = 'none';
document.getElementById('einDivLayer2').style.display = 'none';
document.getElementById('einDivLayer3').style.display = 'none';
Dann werden Sie auch ausgeblendet. Allerdings kann das ja nicht die Lösung des Problemchens sein ;)
 
In deinem Code ist kein einDivLayer0 zu sehen.
Wenn wirklich keiner da ist, landet die Funktion bereits beim ersten Schleifendurchlauf in einem Fehler und wird nicht weiter ausgeführt.
 
Oha ! Ich werd verrückt ... Du hast vollkommen Recht. Ich hatte mir darüber keinerlei Gedanken gemacht um ehrlich zu sein. Und auch die Fehlerkonsole von SeaMonkey und Firefox haben mir keine Fehlermeldungen zurückgegeben. Deswegen wusste ich auch nicht wo der Teufel sich im Detail vergraben hatte.

Aber gut zu wissen das sich JavaScript derartg verhält. Wie sieht es denn aus wenn zwischendurch eine Nummer fehlen würde. Quasi ich zähle bis 10 aber der Layer 5 würde fehlen. Würde es sich dann genauso verhalten ?

Trotzdem erstmal besten dank für die Hilfe =)
 
Die Funktion bricht dann ab, wenn ein Fehler auftritt...tritt er zwischendurch auf, wird halt alles erledigt, bis der Fehler auftritt, und dann nichts mehr.

Abhilfe dabei könnte ein try-catch-Statement schaffen:
Code:
function HideSubMenu(containerNo){
	      for(i=0;i<10;i++){
		 if( i != containerNo){
			try{document.getElementById('einDivLayer'+i).style.display = 'none';}
                        catch(e){continue;}
			}
		}
	}
 

Neue Beiträge

Zurück