Nico: Funktionsverknuepfung zwischen Formfeldern

Hallo,

folgendes Script sollte bewirken, dass, je nachdem welche Auswahl in einem ersten Feld getroffen wird, sich ein entsprechendes zweites Feld oeffnet. Das klappt soweit auch ganz gut.
Nur habe ich damit folgendes Problem: Treffe ich im ersten Feld die Auswahl "Deutschland", erscheint im zweiten Feld die Liste der Bundeslaender. Treffe ich nun im ersten Feld die Auswahl "Frankreich", erscheint das dritte Feld mit den franzoesischen Regionen nicht mehr.
Woran liegt's?
Bitte helft ... ich komme da nicht weiter!

Gruss Nico

<html>

<head>
<title>Formulartest</title>
<script language="JavaScript">
<!--
function zeigeLaender() {
i=document.forms[0].elements[0].selectedIndex;
if (document.layers){
for (j=0;j<2;j++) document.layers[j].visibility="hide";
document.layers[i].visibility="show";}
else {
for (j=0;j<2;j++) document.all.tags("div")[i].style.visibility="hidden";
document.all.tags("div")[i].style.visibility="visible";}
return
}
//-->
</script>
</head>

<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<form name="form1" action method target>
  <p><select name="land" size="2" onchange="zeigeLaender()">
    <option value="land1">Deutschland</option>
    <option value="land2">Frankreich</option>
    <option value="land3">Luxemburg</option>
  </select></p>
</form>
<div id="land1" style="position:absolute; top:100; left:10; visibility:hidden;">

<form name="form2" action method target>
  <p><select name="regionen1" size="1">
    <option value="Reg1">Rheinland-Pfalz</option>
    <option value="Reg2">Saarland</option>
    <option value="Reg3">Hessen</option>
    <option value="Reg4">Baden-Württemberg</option>
    <option value="Reg5">Nordrhein-Westfalen</option>
    <option value="Reg6">Schleswig-Holstein</option>
    <option value="Reg7">Brandenburg</option>
    <option value="Reg8">Sachsen</option>
    <option value="Reg9">Thüringen</option>
    <option value="Reg10">Bayern</option>
    <option value="Reg11">Bremen</option>
    <option value="Reg12">Mecklenburg-Vorpommern</option>
    <option value="Reg13">Sachsen-Anhalt</option>
    <option value="Reg14">Berlin</option>
    <option value="Reg15">Hamburg</option>
    <option value="Reg16">Niedersachsen</option>
  </select></p>
</form>
</div><div id="land2" style="position:absolute; top:100; left:10; visibility:hidden;">

<form name="form3" action method target>
  <p><select name="regionen2" size="1">
    <option value="Reg1">Rhône Alpes</option>
    <option value="Reg2">Languedoc-Roussillon</option>
    <option value="Reg3">Auvergne</option>
    <option value="Reg4">Aquitaine</option>
    <option value="Reg5">Loire</option>
    <option value="Reg6">Bretagne</option>
    <option value="Reg7">Basse Normandie</option>
    <option value="Reg8">Haute Normandie</option>
    <option value="Reg9">Picardie</option>
    <option value="Reg10">Ile de France</option>
    <option value="Reg11">Champagne Ardennes</option>
    <option value="Reg12">Lorraine</option>
    <option value="Reg13">Alsace</option>
    <option value="Reg14">Franche Comté</option>
    <option value="Reg15">Poitou Charente</option>
    <option value="Reg16">Limousin</option>
    <option value="Reg17">Provence Côte d'Azur</option>
    <option value="Reg18">Midi Pyrénées</option>
    <option value="Reg19">Nord Pas de Calais</option>
    <option value="Reg20">Centre</option>
    <option value="Reg21">Bourgogne</option>
    <option value="Reg22">Corse</option>
  </select></p>
</form>
</div><div id="land3" style="position:absolute; top:100; left:10; visibility:hidden;">

<form name="form4" action method target>
  <p><select name="regionen3" size="1">
    <option value="Reg1">Luxemburg</option>
    <option value="Reg2">Ardennes</option>
    <option value="Reg3">Minette</option>
    <option value="Reg4">Mosel</option>
  </select></p>
</form>
</div>
</body>
</html>

  1. Moin,

    Hallo,

    folgendes Script sollte bewirken, dass, je nachdem welche Auswahl in einem ersten Feld getroffen wird, sich ein entsprechendes zweites Feld oeffnet. Das klappt soweit auch ganz gut.
    Nur habe ich damit folgendes Problem: Treffe ich im ersten Feld die Auswahl "Deutschland", erscheint im zweiten Feld die Liste der Bundeslaender. Treffe ich nun im ersten Feld die Auswahl "Frankreich", erscheint das dritte Feld mit den franzoesischen Regionen nicht mehr.
    Woran liegt's?

    Keine Ahnung, ich hab's gerade mit Netscape 4.05 getestet - funktioniert ohne Probleme. Vielleicht reagieren die verschiedenen Netscape-Versionen da unterschiedlich? Gerade im Zusammenhang mit Layern treten bei Javascript oft "geheimnisvolle" Probleme auf...

    Bis dannundwann

    Andreas

    1. Hallo Andreas,

      Keine Ahnung, ich hab's gerade mit Netscape 4.05 getestet - funktioniert ohne Probleme. Vielleicht reagieren die verschiedenen Netscape-Versionen da unterschiedlich? Gerade im Zusammenhang mit Layern treten bei Javascript oft "geheimnisvolle" Probleme auf...
      Bis dannundwann
         Andreas

      Das ist zum wahnsinnig werden, IE 4.0 verdaut das Script nicht.
      Weiss da einer von Euch Rat?

      Nico

  2. Hi Nico:
    Der Witz bei dem Script ist, dass bei jeder Auswahl erst alle Regionen unsichtbar und dann die angewaehlte Region sichtbar gemacht wird. Da es 3 Laender gibt musst du auch die 3!! Regionen unsichtbar machen. also jeweils: (j=0;j<3;j++). Ausserdem muss es in der Zeile fuer den IE:  for (j=0;j<2;j++) document.all.tags("div")[j].style.visibility="hidden"; heissen. Du hast im Div i und j vertauscht. So muesste es klappen
    Holger

    1. Hallo Holger,

      allerbesten Dank fuer die nochmalige Nachhilfe. Nach Korrektur funktioniert's.

      Gruss
      Nico

      Hi Nico:
      Der Witz bei dem Script ist, dass bei jeder Auswahl erst alle Regionen unsichtbar und dann die angewaehlte Region sichtbar gemacht wird. Da es 3 Laender gibt musst du auch die 3!! Regionen unsichtbar machen. also jeweils: (j=0;j<3;j++). Ausserdem muss es in der Zeile fuer den IE:  for (j=0;j<2;j++) document.all.tags("div")[j].style.visibility="hidden"; heissen. Du hast im Div i und j vertauscht. So muesste es klappen
      Holger