getElementById Code verkürzen

xthetronx

Erfahrenes Mitglied
Hallo zusammen,

sorry, besserer Titel ist mir nicht eingefallen.

Ich habe mir eine Function zusammen gebaut, die mir verschiedene Inputfelder, je nach Bedarf ein oder ausblendet.
Das funktioniert auch soweit. Jetzt dachte ich mir, dass ich den Code vielleicht schlanker machen könnte, indem ich allen Inputfeldern die gleiche ID gebe und in der Funktion dann nur noch eine Zeile drin stehen muss.

Im Moment sieht meine function so aus:
Code:
function banner(banner_logo){
	if(banner_logo == "banner"){
		//alle Felder für Banner einblenden
		document.getElementById("banner").style.visibility = "visible";	
		//alle Felder für Logos ausblenden

		document.getElementById("logo1").style.visibility = "hidden";
		document.getElementById("logo2").style.visibility = "hidden";	
		document.getElementById("logo_bilder_1").style.visibility = "hidden";			
		document.getElementById("logo_bilder_2").style.visibility = "hidden";	
		document.getElementById("logo_upload_1").style.visibility = "hidden";				
		document.getElementById("logo_upload_2").style.visibility = "hidden";			
	}else{//alle Felder für Banner ausblenden
		document.getElementById("banner").style.visibility = "hidden";		
		document.getElementById("banner").style.visibility = "hidden";
		document.getElementById("banner_bilder").style.visibility = "hidden";	
		document.getElementById("banner_upload").style.visibility = "hidden";	
		//alle Felder für Logos einblenden		
		document.getElementById("logo1").style.visibility = "visible";
		document.getElementById("logo2").style.visibility = "visible";	
		document.getElementById("logo_bilder_1").style.visibility = "visible";			
		document.getElementById("logo_bilder_2").style.visibility = "visible";	
		document.getElementById("logo_upload_1").style.visibility = "visible";				
		document.getElementById("logo_upload_2").style.visibility = "visible";					
	}	
}
Die funktioniert, wie gesagt, aber ich muss halt jedes Element einzeln angeben.
Ich hoffe aber, dass ich den Quellcode etwas optimieren kann und habe es hiermit versucht.
Code:
document.all[banner].style.visibility = "hidden";
Habe allen relevanten Feldern die gleiche ID Bezeichnung (banner) gegeben, aber es wird dann immer nur ein Feld, das erste im HTML Code ausgeblendet.
Ist meine Idee so überhaupt umzusetzen?

Gruß

Torsten
 
Hi, ids gürfen im gesamten script nur einmal vorkommen!
Daher wird nur das erste genommen die restlichen sind dann ungültig!

Du kannst den Code aber verkleinern wenn du die namen in ein array pakst und das dann in einer schleife durchgehst und jedem Element den wert zuweist.


document.all ist für den IE(4.0) gedacht, und wird eigentlich nur noch zu Browserunterscheidung gebraucht.

mfg Napofis
 
Verwende stattdessen das Name-Attribute, das darfst du so oft verwenden, wie du willst.

Dabei liefert dir document.getElementsByName('nameDerElemente') einen Array...den kannst du dann problemlos in einer Schleife durchlaufen und alle Felder manipulieren.
 

Neue Beiträge

Zurück