Hallo Susanna,
ich finde diese Diskusssion ist mittlerweile etwas unklar geworden, ich versuch deshalb mal, etwas Struktur reinzubringen.
Du sagst im Ausgangsposting, dass ein bestimmter Bereich aufrund der Auswahl einer Selectbox ein-/ausgeblendet werden soll. Dazu musst Du dir klar machen, dass Selectboxen fuer gewoehnlich mit dem onchange-Event ausgewertet werden. Damit auf jeden Fall ein Wechsel (=Change) stattfinden muss, muss die erste Option neutral sein. Da bringt dich zu
<select onchange="function(parameter)">
<option>-- Bitte etwas auswaehlen --</option>
<option value="DE">Deutschland</option>
<option value="AT">Österreich</option>
<select>
Du kannst aus einer Selectbox ohne ein paar Kunstgriffe nur ein Parameter an die Funktion weitergeben, diesem Fall bietet sich 'this' an. 'this' ist eine Referenz auf das Element, das die Funktion in Gang setzt, also die Selectbox.
Dein Select sieht danach so aus:
<select onchange="function(this)">
this steht hier ohne Anfuehrungszeichen, weil es aus der Sicht von Javascript eine Variable ist, kein String.
Bei der Gelegenheit faellt mir dein letztes Posting ein
Sowas: onChange="Verbergen("12plz","v")"> geht nicht gut,
das geht so: onChange="Verbergen('12plz','v')">
Ansonsten ist dein String, der Funktion startet hinter dem erstem " zu Ende, faengt hinter 12plz wieder an usw.
Deine Selectbox schickt jetzt this, also sozusagen sich selbst an die Funktion und die kann dann nachschauen, was ausgewaehlt wurde.
function verbergen(sender) //ich nenn das immer 'sender', andere nehmen 'elem', das ist wurscht. Aber es ist wichtig, dass Du dir einen bestimmten Stil angewoehnst und den durchziehst, am besten mal bei andern abkucken.
Also nochmal:
<script type="text/javascript">
function verbergen(sender)
{
//erstmal schauen, was ausgewaehlt wurde
var land = sender.value // also DE oder AT
// jetzt ist es nach meinem Verstaendnis so, das 'plz12' bei der Auswahl von 'DE' angezeigt, bei 'AT' verborgen wird
if(land == 'DE')
{
document.getElementById('plz12').style.visibility = 'visible';
}
else //falls es mehr Laender geben, halt mit else if (land == 'CH') oder sowas weitermachen
{
document.getElementById('plz12').style.visibility = 'visible';
}
}
Jetzt fehlt noch die Weitergabe von 'plz12', vermutlich gibt es ja auch 'plz13' und sowas. Das laesst sich in <option> schlecht unterbringen, also machen wir das zB. in der Funktion selbst.
In der Funktion unter die Zeile 'var land...' machst du Arrays mit allen IDs, die fuer jedes Land in Frage kommen.
var plzDE = new Array ('plz12', 'plz13')//oder was immer angezeigt werden soll
var plzAT = usw.
Anstatt der Zeile
document.getElementById('plz12').style.visibility = 'visible';
brauchst Du eine Schleife, die alle relevanten Felder einblendet. Umgekehrt geht auch, du kannst auch diejenigen IDs in Deine Arrays packen, die _ausgeblendet_ werden sollen, je nach dem, was dir besser passt. Loesch also die document.get..-Zeile und ersetze sie durch
for(var i = 0; i < plzDE.length; i++)
{
document.getElementById(plzDE[i]).style.visibility = 'visible';
}
Die Funktion laeuft damit einmal durch das ganze Array und setzt alle enthaltenen Elemente auf visible. Wie schon erwaehnt, umgekehrt waere auch denkbar.
Das waer's ,ich hab's nicht getestet, aber das sollte hinhauen. Man koennte das noch etwas eleganter machen, aber so finde ich es uebersichtlicher.
Noch ein paar Worte zum Debuggen von Scripten. Der Internet-Explorer ist fuer diese Aufgabe nur eingeschraenkt zu gebrauchen. Meine bevorzugte Kombination ist Firefox mit der Webdeveloper-Extension. Die sagt Dir naemlich sofort, wenn was nicht stimmt und vor allem bekommst Du eine brauchbare Fehlermeldung.
Gruß,
Dieter