visibility eines layers in abhängigkeit von auswahl in select menü

vyanna

Grünschnabel
Hallo,

habe hier ein kleines script gebastelt, welches wenn im select menü ein bestimmter option-wert ausgewählt ist einen layer einblenden soll. dies tut es aber leider nicht, also der layer wird nicht eingeblendet. sieht jemand zufällig, wo der fehler ist? :confused:

Code:
<html>
 <head>

  <script language="javascript">

   function einblenden(x)
   {
   	x.style.visibility="visible";
   }

   function ausblenden(x)
   {
   	x.style.visibility="hidden";
   }

   function changeVisibility(x)
   {
 	var menue = document.forms.formular.auswahl;
 	if(menue.options[menue.selectedIndex].value=='neu'){einblenden(x);}
 	else{ausblenden(x);}
   }

  </script>
 </head>

 <body>
  <form name="formular" action="file.php" method=get>
     <select name="auswahl" size="1" onChange="changeVisibility(layer);">
      <option value="neu">neu</option>
      <option value="">...</option>
     </select> 
   </form>
   <div name="layer" style="visibility:hidden">
	<p>layerinhalt</p>
   </div>

 </body>
</html>
 
Hi,

versuchs mal mit:
PHP:
changeVisibility(getElementById('layer'));

in den meisten F´ällen dürfte "changeVisibility(document.layer)" ebenfalls ausreichen.

Gruß
 
Hi,

sorry, ich hatte Deine Code nicht genau genug gelesen. ;)

Folgendes funktioniert:
PHP:
<script language="javascript">

   function einblenden(x)
   {
   	x.style.visibility="visible";
   }

   function ausblenden(x)
   {
   	x.style.visibility="hidden";
   }

   function changeVisibility(x)
   {
 	var menue = document.forms.formular.auswahl;
 	if(menue.options[menue.selectedIndex].value=='neu'){einblenden(x);}
 	else{ausblenden(x);}
   }

  </script>
 </head>

 <body>
  <form name="formular" action="file.php" method=get>
     <select name="auswahl" size="1" onChange="changeVisibility(layer);">
      <option value="neu">neu</option>
      <option value="">...</option>
     </select> 
   </form>
   <div id="layer" style="position:absolute; visibility:visible">
	
  <p>layerinhalt</p>
</div>
  
</body>
Dein Layer braucht statt einem Namen "Name=" eine ID "id=".
(Außerdem solltest Du "position:absolute" verwenden, es sei denn, das Layer soll über die ganze Seitenbreite gehen.)

Gruß
 
Hallo,

ich ein ähnliches Problem.
Hauptgrund ist, das ich meine Select-Werte in einem Array abspeichere.
PHP:
<select name="artikel[Spieler]" ...>
Wie genau muss ich dieses DropDown-Menü ansprechen?

Ich hab´s bis jetzt so:
PHP:
var menue = document.forms.bestellen.artikel[Spieler];
versucht, allerdings erscheint die Fehlermeldung: Spieler ist undefiniert

PHP:
var menue = document.forms.bestellen.artikel[];
funktioniert auch nicht, Fehlermeldung: Objekt erwartet

Stehe auch leider an den Anfängen von JavaScript, muss aber heute einen Shop anpassen, in dem das DropDown als "artikel[Spieler]" ausgewertet werden muss.

Kann mir jemand einen Tipp geben?

Danke schon mal,

Martys
 
Hi,

versuch's mal mit

&nbsp;&nbsp;document.forms.bestellen.elements['artikel[Spieler]'];

Ciao
Quaese
 
heyho,
hab anbei zu dem Thema mal ne Frage: Ist es möglich einen Layer von einem anderen abhängig zu machen. Dh. man hat 2 Layer und der eine umfasst den anderen. Nur wenn layer1 visible ist, kann layer2 angezeigt werden. Um layer2 aber entgültig anzeigen zu lassen, müssen beide layer auf visible sein. Heisst, wenn layer1 visible ist und layer2 hidden wird layer2 immernoch nicht angezeigt. Wäre so eine Konstruktion irgendwie möglich?

Ich hab mal versucht das obere Beispiel auf meine Frage anzupassen. Hierbei dürfte dann layer2 nie angezeigt werden, aber irgendwie funktioniert das ganze nicht und layer2 wird ohne Unterordnung verarbeitet:(
Code:
<html>
<head>
<script language="javascript"> 

   function einblenden(x) 
   { 
       x.style.visibility="visible"; 
   } 

   function ausblenden(x) 
   { 
       x.style.visibility="hidden"; 
   } 

   function changeVisibility(x) 
   { 
    var menue = document.forms.formular.auswahl; 
    if(menue.options[menue.selectedIndex].value=='neu'){einblenden(x);} 
    else{ausblenden(x);} 
   } 

  </script> 
</head> 

<body> 
  <form name="formular" action="file.php" method=get> 
     <select name="auswahl" size="1" onChange="changeVisibility(layer2);"> 
      <option value="neu">neu</option> 
      <option value="">...</option> 
     </select> 
   </form> 
   <div id="layer1" style="position:absolute; visibility:hidden"> 
   <div id="layer2" style="position:absolute; visibility:visible"> 
     
  <p>layerinhalt</p> 
</div> 
</div> 
</body>
</html>

greets b
 
Hi,

soweit ich weiß, verhält es sich bei visibility=inherit beim inneren Layer so, dass es die Sichtbarkeit des äußeren Layers übernimmt. Wenn Du das innere Layer auf "visible" schaltest, wird es (nach meiner Erinnerung) durchgehend angezeigt (also auch, wenn das äußere Layer unsichtbar ist). Was hält Dich davon ab, es einfach auszuprobieren? ;)

Will man die Sichtbarkeiten verknüpfen, kann man natürlich die "visibility"-Eigenschaft für beide Layer von entsprechenden JavaScript-Funktionen abfragen und setzen lassen.

Gruß
 

Neue Beiträge

Zurück