sebastian1992: Javascript Formular - je nach Dropdown bereiche anzeigen

Hallo,

ich mache z.Z.: ein Bestellungsformular und das Javascript macht bei mir Probleme.

Javascript ist einfach nicht mein Ding ;-)

  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
  
<head>  
 <title>Bestellung</title>  
  
 <style type="text/css">  
  #doener{  
   display: none;  
  }  
 </style>  
  
 <script type="text/javascript">  
  function change(formular)  
  {  
   switch(formular.speise.value)  
   {  
    case "w":  
    break;  
  
    case "d":  
    document.getElementById("doener").style.display = block;  
    break;  
  
    case "p";  
    break;  
   }  
  }  
 </script>  
</head>  
  
<body>  
 <div>  
  <h1>Bestellformular</h1>  
  
  <fieldset>  
   <legend>Speiße</legend>  
  
   <select name="speise" onchange="change(this)">  
    <option value="w">- bitte wählen -</option>  
    <option value="d">Döner</option>  
    <option value="p">Pizza</option>  
   </select>  
  </fieldset>  
  
  <form action="/" method="post">  
   <div id="doener">  
    ...  
   </div>  
  </form>  
 </div>  
</body>  
  
</html>  

Habe den Code jetzt mal aufs wesentliche gekürzt...

Wenn ich onchange verwenden, passiert nichts. Habe das switch mal rausgenommen, es liegt daran, wenn ich stattdessen nur ein alert("change()"); mache, gehts.

  1. Javascript ist einfach nicht mein Ding ;-)

    http://de.selfhtml.org/javascript/objekte/options.htm#value

    Siechfred

    --
    Obacht, hinter jedem noch so kleinen Busch könnte ein Indianer sitzen!
    1. Und wo ist nun der Fehler bei mir??

      1. Und wo ist nun der Fehler bei mir??

        Dein Code greift auf das Value des select-Elementes zu:
        formular.speise.value

        Du willst aber den value des gewählten option-Elementes wissen, siehe dazu den geposteten Link.

        Siechfred

        --
        Obacht, hinter jedem noch so kleinen Busch könnte ein Indianer sitzen!
        1. Du willst aber den value des gewählten option-Elementes wissen, siehe dazu den geposteten Link.

          Habe es jetzt mit der Funktion gelöst:

            
          function setVisibility() {  
           var val=document.forms[0].speise.selectedIndex;  
            
           doener.style.display = 'none';  
           pizza.style.display = 'none';  
            
           if(val==1) doener.style.display = 'block';  
           if(val==2) pizza.style.display = 'block';  
          }
          

          So muss ich net immer alles prüfen.

  2. Mahlzeit sebastian1992,

    <select name="speise" onchange="change(this)">

    Du übergibst hier als Parameter für die Funktion das <select>-Objekt.

    function change(formular)
      {
       switch(formular.speise.value)
       {

    Und hier versuchst Du, auf den Wert eines Objekts namens "speise", das sich unterhalb des übergebenen Objekts befinden soll, zuzugreifen. Das existiert natürlich nicht.

    Sinnvollerweise solltest Du die Funktion vielleicht folgendermaßen anfangen:

    function change(liste) {  
      switch (liste.value) {  
    
    ~~~...  
      
      
    MfG,  
    EKKi  
    
    -- 
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|