Shadow89: if (document.formular.garnitur.checked == true) --> ERROR

Hallo,

ich habe hier im Forum mich schon umgeschaut und mein Problem genau in diesem Beitrag gefunden http://forum.de.selfhtml.org/archiv/2003/3/t39682/
Nur leider komme ich mit den dort angegebenen Antworten nicht weiter.

Um diesen Code handelt es sich:

function berechnung()  
{  
var preis = "";  
}  
  
{  
if (document.formular.garnitur.checked == true) { preis = preis + 208; }  
alert(preis);  
}

Die Fehlermeldung ist immer: Zeile 56 Zeichen 1 'document' ist undefiniert.

Was mache ich falsch, bitte um Hilfe!

Thx

  1. Tut mir jetzt leid für den Doppel Post aber ich habe ebend leider den falschen Code gepostet da ich noch am hin und her probieren war.
    Hier jetzt der richtige:

    function berechnung()  
    {  
    var preis = "";  
    var preis2 = "";  
    }  
      
    {  
    if (document.formular.garnitur[0].checked == true) { preis = preis + 208; }  
    alert(preis);  
    }
    

    Die Fehlermeldung ist aber immernoch die gleiche ;-)

    1. Hi,

      function berechnung()

      {
      var preis = "";
      var preis2 = "";
      }

        
      Du erzeugst hier beim Aufruf einer Funktion zwei Variablen, die im Scope dieser Funktion existieren und nach Abbarbeiten derselben - also exakt nach dem Erzeugen der Variablen - aufhören zu existieren. Die Funktion macht also exakt gar nichts, bis auf ein paar Millisekunden Zeit zu verbraten.  
        
      
      > Die Fehlermeldung ist aber immernoch die gleiche ;-)  
        
      Ich vermute, sie hängt vom Kontext ab, in dem Dein Script läuft. Bitte verlinke die entsprechende Seite, auf der das Problem zu sehen ist.  
        
      Cheatah  
      
      -- 
      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|  
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html  
      X-Will-Answer-Email: No  
      X-Please-Search-Archive-First: Absolutely Yes
      
      1. Du erzeugst hier beim Aufruf einer Funktion zwei Variablen, die im Scope dieser Funktion existieren und nach Abbarbeiten derselben - also exakt nach dem Erzeugen der Variablen - aufhören zu existieren. Die Funktion macht also exakt gar nichts, bis auf ein paar Millisekunden Zeit zu verbraten.

        D.h. also wenn ich den variablen den Wert 0 am anfang zuteile dann gehts?

        Ich vermute, sie hängt vom Kontext ab, in dem Dein Script läuft. Bitte verlinke die entsprechende Seite, auf der das Problem zu sehen ist.

        Die Seite ist leider bisher nur local erreichbar.
        Hier aber der entsprechende HTML Quellcode:

        <p><strong>Ab- Überlaufgarnitur (Füllung über Aufputzarmatur):</strong><br>  
            <input type="radio" name="garnitur" value="garn_mit" type="text"> mit<br>  
            <input type="radio" name="garnitur" value="garn_ohne" type="text"> ohne  
        </p>
        
        1. Die Seite ist leider bisher nur local erreichbar.
          Hier aber der entsprechende HTML Quellcode:

          <p><strong>Ab- Überlaufgarnitur (Füllung über Aufputzarmatur):</strong><br>

          <input type="radio" name="garnitur" value="garn_mit" type="text"> mit<br>
              <input type="radio" name="garnitur" value="garn_ohne" type="text"> ohne
          </p>

            
          <http://de.selfhtml.org/javascript/objekte/elements.htm#checked>  
            
          Struppi.
          
          1. Danke für die ganzen Tipps, aber leider funktioniert es immernoch nicht.
            Bei der ausführung der externen JavaScript Datei wird folgender fehler ausgegeben:
            Skript: C:\Pfadangabe der JavaScript Datei
            Zeile: 54
            Zeichen: 1
            Fehler: 'document' ist undefiniert
            Code: 800A1391
            Quelle: Laufzeitfehler in Microsoft JScript

            Was habe ich falsch gemacht?

            Hier diesmal der komplette Quellcode der JavaScript Datei:

            function final_funktion() {  
            chkFormular(700,300);  
            return false;  
            if(chkFormular() == true) { berechnung(); }  
            }  
              
            function chkFormular () {  
              
            if (document.formular.ausfuerung.value == "nix") {  
                alert("Bitte wählen Sie eine Ausführung!");  
                return false;}  
              
              if (document.formular.Name.value == "") {  
                alert("Bitte Ihren Namen eingeben!");  
                return false;}  
              
              if (document.formular.Anschrift.value == "") {  
                alert("Bitte Ihre Anschrift eingeben!");  
                return false;}  
              
              if (document.formular.Ort.value == "") {  
                alert("Bitte Ort und Plz eingeben!");  
                return false;}  
              
              if (document.formular.Land.value == "") {  
                 alert("Bitte geben Sie Ihr Land ein!");  
                 return false;}  
              
             if (document.formular.email.value.indexOf("@") == -1) {  
                alert("Sie haben keine E-Mail Adresse eingegeben.");  
                document.formular.email.focus();}  
              
            if (document.formular.Telefon.value == "") {  
                alert("Bitte Ihre Telefonnummer eingeben!");  
                document.formular.Telefon.focus();  
                return false;}  
              
            var chkZ = 1;  
              for (i = 0; i < document.formular.Telefon.value.length; ++i)  
                if (document.formular.Telefon.value.charAt(i) < "0" ||  
                    document.formular.Telefon.value.charAt(i) > "9")  
                  chkZ = -1;  
              if (chkZ == -1) {  
                alert("Telefonnummer falsch!");  
                document.formular.Telefon.focus();  
                return false;}  
            }  
              
            function berechnung() {  
            var preis = 0;  
            }  
              
            {  
            if (document.formular.garnitur[0].checked == true) {  
                preis = preis + 208;  
              } else if (document.formular.garnitur[1].checked == true) {  
                preis = preis + 0;  
              }  
               alert(preis);  
            }
            

            Und hier der entsprechende Quelltext der HTML Datei:

            <form id="formular" name="formular".....onsubmit="return final_funktion();"......  
            <strong>Ab- Überlaufgarnitur (Füllung über Aufputzarmatur):</strong><br>  
                <input type="radio" name="garnitur" value="garn_mit"> mit<br>  
                <input type="radio" name="garnitur" value="garn_ohne"> ohne  
            ......  
            <input type="submit" value="Absenden" onsubmit="return final_funktion()"><input type="reset" value="Abbrechen">
            
            1. Skript: C:\Pfadangabe der JavaScript Datei
              Zeile: 54
              Zeichen: 1
              Fehler: 'document' ist undefiniert
              Code: 800A1391
              Quelle: Laufzeitfehler in Microsoft JScript

              Was habe ich falsch gemacht?

              Keine Ahnung, das ist kein normaler JS Fehler. Denn document existiert immer.

              Wäre aber nett gewesen, wenn du uns noch die Zeile 54 gezeigt hättest.

              Struppi.

              1. Hallo

                Skript: C:\Pfadangabe der JavaScript Datei
                Zeile: 54
                Zeichen: 1
                Fehler: 'document' ist undefiniert
                Code: 800A1391
                Quelle: Laufzeitfehler in Microsoft JScript

                Was habe ich falsch gemacht?

                Keine Ahnung, das ist kein normaler JS Fehler. Denn document existiert immer.

                Ist ja auchn ein JScript-Fehler. Google kennt jedenfalls diverse Seiten zum oben genannten Fehlercode.

                Tschö, Auge

                --
                Die deutschen Interessen werden am Liechtenstein verteidigt.
                Veranstaltungsdatenbank Vdb 0.2
                1. jetzt habe ich die funktion abgeändert und es kommt keine Fehlermeldung mehr. Aber dafür wird die Funktion nicht ausgeführt (zumindest nicht sichtbar) was haben ich falsch gemacht, bei diesem ganzen hin und her blick ich jetzt garnicht mehr durch. Es wird die variable preis durch den alert befehl nicht ausgegeben, warum?

                  function berechnung() {  
                   var preis = 0;  
                   if (document.formular.garnitur[0].checked) {  
                     preis = 218;}  
                     else if (document.formular.garnitur[1].checked) {  
                      preis = 0;  
                    }  
                   if (document.formular.artgrip[0].checked) {  
                     preis + 103; }  
                    
                  alert(preis);  
                  }
                  
                  1. jetzt habe ich die funktion abgeändert und es kommt keine Fehlermeldung mehr. Aber dafür wird die Funktion nicht ausgeführt (zumindest nicht sichtbar) was haben ich falsch gemacht, bei diesem ganzen hin und her blick ich jetzt garnicht mehr durch. Es wird die variable preis durch den alert befehl nicht ausgegeben, warum?

                    Keine Ahnung, die Funktion enthält keine Fehler.
                    Existieren denn die Elemente die du ansprechen willst?

                    Struppi.

                    1. Es kommt jetzt zu keiner Fehlermeldung mehr, aber es wird die Funktion einfach nicht ausgeführt. D.h. es gibt keine alert Ausgabe des preises, des weiteren wird das mailto auch nicht mehr ausgeführt. Glaube habe meine ganze Datei kaputt gespielt.... Vllt hilfts euch ja wenn ich noch einmal die entsprechenden Quelltexte poste.

                      Aufrufen der JavaScript Datei und dem Mailto

                      <html>  
                      <head>  
                      <script type="text/javascript" src="berechnung160.js"></script>  
                      </head>  
                      <body>  
                      <form id="formular" action="mailto:g.riebau@badexperte.de" method="post" enctype="text/plain" name="formular" onsubmit="return final_funktion();">
                      

                      Das Formular

                      <strong>Ab- Überlaufgarnitur (Füllung über Aufputzarmatur):</strong><br>  
                      <input type="radio" name="garnitur" value="garn_mit"> mit<br>  
                      <input type="radio" name="garnitur" value="garn_ohne"> ohne  
                      <strong>Art-Grip:</strong><br>  
                      <input type="radio" name="artgrip" value="grip_mit" type="text"> mit<br>  
                      <input type="radio" name="artgrip" value="grip_ohne" type="text"> ohne  
                      <input type="submit" value="Absenden" onsubmit="return final_funktion()"><input type="reset" value="Abbrechen">  
                      
                      

                      Die JavaScript Funktionen

                      function final_funktion() {  
                      chkFormular(700,300);  
                      return false;  
                      if(chkFormular() == true) { berechnung(); }  
                      }  
                        
                      function chkFormular () {  
                        
                      if (document.formular.ausfuerung.value == "nix") {  
                          alert("Bitte wählen Sie eine Ausführung!");  
                          return false;}  
                      .....  
                      function berechnung() {  
                       var preis = 0;  
                       if (document.formular.garnitur[0].checked) {  
                         preis = preis + 218;}  
                         else if (document.formular.garnitur[1].checked) {  
                          preis = preis + 0;  
                        }  
                       if (document.formular.artgrip[0].checked) {  
                         preis = preis + 103; }  
                        
                      alert(preis);  
                      }
                      

                      Vielleicht bringt es ja irgendwas. Wenn ihr mir helfen könnt, danke!

                      1. Hi,

                        Es kommt jetzt zu keiner Fehlermeldung mehr, aber es wird die Funktion einfach nicht ausgeführt. D.h. es gibt keine alert Ausgabe des preises, des weiteren wird das mailto auch nicht mehr ausgeführt. Glaube habe meine ganze Datei kaputt gespielt....

                        Das ist ja auch nicht sonderlich verwunderlich - da du offenbar mit sehr wenig Ahnung einfach mal irgendwelche Anweisungen hintereinanderklatschtst.

                        Du solltest dir mal ein bisschen mehr Ahnung von den grundlegenden Zusammenhaengen besorgen - derzeit scheinst du ja mehr Herumzuprobieren.

                        Die JavaScript Funktionen
                        function final_funktion() {
                        chkFormular(700,300);

                        Wofuer uebergibst du der Funktion hier zwei Parameter - wenn diese Funktion anschliessend gar nichts mit diesen macht?

                        return false;

                        Hier steigst du aus der Funktion final_funktion aus.

                        if(chkFormular() == true) { berechnung(); }

                        Das wird deshalb natuerlich gar nicht mehr ausgefuehrt, somit auch berechnung nirgendwo mehr aufgerufen.

                        MfG ChrisB

                        --
                        „This is the author's opinion, not necessarily that of Starbucks.“
                        1. Danke für die Hilfe und dem finden von Fehlern. Meine Funktion funktioniert trotzdem noch nicht, was daran liegt das ich nur andere Fehler korrigiert habe aber trotzdem danke. Lernen tu ich davon zwar schon aber meinem Problem näher kommen tu ich nicht was ja eigentlich das Primärziel gewesen wäre.Danke und tschau!

                      2. Hallo Shadow89,

                        function final_funktion() {

                        chkFormular(700,300);

                        hier rufst du die Funktion mit Parametern auf, die aber nicht verarbeitet werden,

                        return false;

                        hier wird die Check-Funktion beendet

                        if(chkFormular() == true) { berechnung(); }
                        }

                        dieser teil wird nie erreicht

                        }

                          
                          
                        Gruß, Jürgen  
                        
                        
                  2. Hallo Shadow89,

                    Es wird die variable preis durch den alert befehl nicht ausgegeben, warum?

                    Gibts keine Fehlermeldungen?

                    Ich würde übrigens den Firefox zum entwickeln benutzen. Da kann man z.B. auch nen Javascript-Debugger installiere, wo man den Code Zeilenweise durchgehen kann etc.

                    Aber zumindest das ist Unsinn:

                      
                      if (document.formular.artgrip[0].checked) {  
                        preis + 103; }  
                    
                    

                    Du meinst wahrscheinlich

                    preis += 103; //kurzform vom unteren

                    oder

                    preis = preis + 103;

                    Jonathan

            2. Mahlzeit Shadow89,

              function berechnung() {
              var preis = 0;
              }

              Diese Funktion ist immer noch sinnlos - informiere Dich über die <http://de.selfhtml.org/javascript/sprache/variablen.htm@title=Gültigkeitsbereiche von Variablen>.

              {
              if (document.formular.garnitur[0].checked == true) {
                  preis = preis + 208;
                } else if (document.formular.garnitur[1].checked == true) {
                  preis = preis + 0;
                }
                 alert(preis);
              }

              Was sollen hier die geschweiften Klammern? Weiterhin ist es unnötig abzufragen, ob etwas Wahres auch wahr ist: die Eigenschaft http://de.selfhtml.org/javascript/objekte/elements.htm#checked@title=checked liefert bereits true oder false zurück, Du musst das nicht nochmal explizit auf Gleichheit mit true überprüfen. Folgendes würde reichen:

              if (document.formular.garnitur[0].checked) {  
                ...  
              }
              

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Hi,

          D.h. also wenn ich den variablen den Wert 0 am anfang zuteile dann gehts?

          dann ist Deine Funktion weiterhin ein Zeitvergeuder ohne weiteren Effekt. Okay, ein bisschen Speicher verbraucht sie auch.

          <p><strong>Ab- Überlaufgarnitur (Füllung über Aufputzarmatur):</strong><br>

          Dies ist ganz offenbar kein Textabsatz, und für das <br> sehe ich auch keinen Grund. Überlege Dir eine vernünftige Struktur, in der Du auch das <label>-Element beachtest.

          <input type="radio" name="garnitur" value="garn_mit" type="text"> mit<br>

          <input type="radio" name="garnitur" value="garn_ohne" type="text"> ohne

            
          Siehe Struppis Antwort.  
            
          Cheatah  
          
          -- 
          X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|  
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html  
          X-Will-Answer-Email: No  
          X-Please-Search-Archive-First: Absolutely Yes