Hallo,
Ich habe folgendes Problem bei dem folgenden Script zur Formularprüfung bekomme ich folgende Fehlermeldungen:
"Syntaxfehler" in Zeile 43 und 50
(d.h. jeweils die geschwungenen Klammern unter dem else)
dazu hast du ja nun schon den entscheidenden Hinweis bekommen.
"Objekt erwartet" in Zeile 35
Das ist ein Folgefehler, der daraus resultiert, dass der JS-Parser verzweifelt versucht, die öffnende geschweifte Klammer nach dem Aufruf der vermeintlichen Funktion If() zu begreifen.
Wäre nett wenn mir jemand helfen kann, schreib nämlich am Freitag ne Klausur zu dem Thema.
Dann hätte ich noch ein paar gute Ratschläge:
var felder=new Array(4);
felder[0]="txtbetr"
felder[1]="txtjahr"
felder[2]="txtnu"
felder[3]="txtstart"
Gewöhne dir von Anfang an eine saubere Schreibweise an. Auch wenn JS das Weglassen des Semikolons unter bestimmten Voraussetzungen erlaubt, solltest du es trotzdem setzen. Erstens weil andere Sprachen damit weniger schlampig umgehen, zweitens weil es auch für routinierte Leser das Lesen und Verstehen vereinfacht.
If (suchen(document.forms[0].elements[i].name)==true)
Mal angenommen, das if wäre richtig: Wozu vergleichst du einen Wert, der seinerseits nur true oder false sein kann, nochmal explizit auf true, um dann true herauszubekommen, wenn der Wert true ist?
if (suchen(document.forms[0].elements[i].name))
ist ausreichend und meiner Ansicht nach angenehmer zu lesen.
If (check==false)
Dasselbe in grün: Kürzer und besser lesbar kann man das auch als
if (!check)
schreiben.
alert("Ihre Daten wurden gesendet \n Wir berechnen nun Ihr individuelles Angebot")
Und wieder kein Semikolon. Ist das eigentlich Absicht, dass du im ausgegebenen String Leerzeichen vor und hinter dem Zeilenumbruch notierst? Vor allem Leerzeichen am Zeilenende stören oft mein ästhetisches Empfinden ...
function suchen(uebergabe)
{
pruefen=false;for(x=0;x<4;x++)
{
if (felder[x]==uebergabe)
{
pruefen=true
}
}
return pruefen
}
Gewöhne dir an, Programmcode ausführlich zu dokumentieren - das heißt *mindestens*, ihn mit hilfreichen Kommentaren zu versehen. Hier muss man sehr genau überlegen, um zu verstehen, dass die Funktion true zurückgeben soll, wenn uebergabe mindestens einem der Werte felder[0], felder[1], felder[2] oder felder[3] entspricht. Weißt du das in ein paar Wochen noch? Außerdem greift die Funktion auf globale Variablen zu (felder[]). Das ist nicht nur stilistisch unschön, sondern auch eine potentielle Fehlerquelle, weil's nicht gleich auffällt.
So long,
Martin
Wenn du beim Kochen etwas heißes Wasser übrig hast, friere es ein.
Heißes Wasser kann man immer gebrauchen.