Frank Pachollek: form1 is not defined

Hey,

Der folgende Quelltext funktioniert mit dem IE 5.0 tadellos.

<html>
<head>
<title>Probe</title>
<script Language="JavaScript">
function jump()
{
   alert(form1.menu.value);
   if (form1.menu.value == "")return;
   parent.produktnr = parseFloat(form1.menu.value);
   window.location  = "Dateiname.htm";
   location.reload();
}
</script>
</head>

<form name="form1" method=POST>
<select name="menu" onChange="jump()">
<option selected value>(Bitte wählen Sie aus) </option>
<option value="1">Auswahl 1 </option>
<option value="2">Auswahl 2 </option>
<option value="3">Auswahl 3 </option>
</select></p>
</form>

</body>
</html>

Der Netscape Communicator 4.5 meldet bei der Ausführung einer Auswahl:

form1 is not defined.

form1 ist doch definiert oder?

Vielen Dank im voraus

Frank Pachollek

  1. Versuch mal das Formular mit "document.form1" anzusprechen.

    1. Hey,

      so funktionierts mit dem IE und mit Netscape

      alert(document.form1.menu.options[document.form1.menu.selectedIndex].value);

      Aber warum??

      Vielen Dank für Eure Bemühungen

      Frank Pachollek

  2. Hi Frank,

    steht das da wirklich so?

    Denn da fehlt irgendwie der <body> und den braucht Netscape nun mal... ansonsten denke ich mit document.form1.menu.value müßte es gehen.

    Gruß

    Leonhard

    1. Hi Frank,

      steht das da wirklich so?

      Denn da fehlt irgendwie der <body> und den braucht Netscape nun mal... ansonsten denke ich mit document.form1.menu.value müßte es gehen.

      Gruß

      Leonhard

      Hey Leonhard,

      Sorry!

      <body> ist versehentlich raus geflogen, als ich den Code für das Forum auf das Wesentliche gekürzt habe.

      Hier noch einmal der Code mit <body>

      <script Language="JavaScript">
      function jump()
      {
         alert(document.form1.menu.value);
         if(document.form1.menu.value == "")return;
         parent.produktnr = parseFloat(document.form1.menu.value);
         window.location  = "Dateiname.htm";
         location.reload();
      }
      </script>
      </head>
      <body>
      <form name="form1" method=POST>
      <select name="menu" onChange="jump()">
      <option selected value>(Bitte wählen Sie aus) </option>
      <option value="1">Auswahl 1 </option>
      <option value="2">Auswahl 2 </option>
      <option value="3">Auswahl 3 </option>
      </select></p>
      </form>
      </body>
      </html>

      Beim IE ist alles ok. Der Netscape meldet NULL, trotz document.form1.menu.value.
      Habt Ihr noch eine Idee?
      Ich denke auch das es nur ein Flüchtigkeitsfehler ist, aber wo?

      Bis bald

      Frank Pachollek

      1. Hi Frank,

        jetzt habe ich erst gesehen, wo der Fehler liegt... aber besser spät als nie ;-)

        Der Value von menu bleibt immer "null", das ist statisch, du willst ja wissen, welcher eintrag ausgewählt ist und das geht über "selectedIndex":

        function jump()
        {
          var auswahl=document.form1.menu[document.form1.menu.selectedIndex].value;
           alert(auswahl);
           if (auswahl == "")return;
           parent.produktnr = parseFloat(auswahl);
           window.location  = "Dateiname.htm";
           location.reload();
        }
        </script>

        So klappts auch mit dem Nachbarn äh... Netscape ;-)

        Gruß Leonhard

  3. Sorry, dass ichs erst jetzt sehe, aber das ist natuerlich grundsaetzlich falsch. Ich hasse es, wenn Microsoft zur Verbloedung beitraegt - dass ist wieder das beste Beispiel dafuer: Schau Dir mal das an:

    <html>
    <head>

    <script Language="JavaScript">

    function jump(){

    for(i=1;i<document.form1.menu.length;i++){
          if(document.form1.menu.options[i].selected == true) alert(document.form1.menu.options[i].value);
        }

    //    if(document.form1.menu.value == "") return;
    //    parent.produktnr = parseFloat(document.form1.menu.value);
    //    window.location = "Dateiname.htm";
    //    location.reload();
      }

    </script>
    </head>

    <body>

    <form name="form1" method=POST>
    <select name="menu" onChange="jump()">
      <option selected value>(Bitte wählen Sie aus) </option>
      <option value="1">Auswahl 1 </option>
      <option value="2">Auswahl 2 </option>
      <option value="3">Auswahl 3 </option>
    </select>
    </form>

    </body>
    </html>

    Es ist EINDEUTIG FALSCH, dass man im Explorer mit document.form1.menu.value den Wert abfragen kann, den man ausgewaehlt hat. Dass ist kein Javascriptstandard, sondern wieder mal eine Schlamperei und etwas Microsofteigenes.

    Viele Gruesse, Thomas Hieck

    1. Sorry, dass ichs erst jetzt sehe, aber das ist natuerlich grundsaetzlich falsch. Ich hasse es, wenn Microsoft zur Verbloedung beitraegt - dass ist wieder das beste Beispiel dafuer: Schau Dir mal das an:

      Es ist EINDEUTIG FALSCH, dass man im Explorer mit document.form1.menu.value den Wert abfragen kann, den man ausgewaehlt hat. Dass ist kein Javascriptstandard, sondern wieder mal eine Schlamperei und etwas Microsofteigenes.

      Jau so isses glaub ich richtig oder ??

      document.Form1.elements["menu"].options[document.Form1.elements["menu"].selectedIndex].value;

      ist auch viel eleganter so wie einfach document.form1.menu.value  :))

      gruss
      Jens