Fehler in einem Script! (brauche dringend Hilfe)
Jonas
- javascript
Hallo Zusammen!
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)
und:
"Objekt erwartet" in Zeile 35
Ich kann mir das nicht erklären, bin das Script jetzt tausend mal durchgegangen und kann einfach nichts finden..
Wäre nett wenn mir jemand helfen kann, schreib nämlich am Freitag ne Klausur zu dem Thema.
Vielen Dank,
Gruß Jonas
<script language="javascript">
var felder=new Array(4);
felder[0]="txtbetr"
felder[1]="txtjahr"
felder[2]="txtnu"
felder[3]="txtstart"
var texte=new Array(5)
texte[0]="Betrag fehlt\n"
texte[1]="Jahreseingabe fehlt\n"
texte[2]="Nutzungsdauer fehlt\n"
texte[3]="Anfangsjahr fehlt\n"
texte[4]="Ort fehlt\n"
function test()
{
var anzahl=document.forms[0].elements.length;
var check=true;
var meldung="";
for(i=0;i<anzahl;i++)
{
If (suchen(document.forms[0].elements[i].name)==true)
{
If (document.forms[0].elements[i].value=="")
{
check=false;
document.forms[0].elements[i].style.background="#CC3333";
meldung=meldung + texte[i];
}
else
{
document.forms[0].elements[i].style.background="#ffffff"
}
}
}
If (check==false)
{
alert(meldung)
}
else
{
alert("Ihre Daten wurden gesendet \n Wir berechnen nun Ihr individuelles Angebot")
}
}
function suchen(uebergabe)
{
pruefen=false;
for(x=0;x<4;x++)
{
if (felder[x]==uebergabe)
{
pruefen=true
}
}
return pruefen
}
</script>
Hi,
(d.h. jeweils die geschwungenen Klammern unter dem else)
das liegt daran, dass es kein if zu diesen elses gibt. Folglich kann der Code nicht grammatisch analysiert werden, geschweige denn ausgeführt.
Ich kann mir das nicht erklären, bin das Script jetzt tausend mal durchgegangen und kann einfach nichts finden..
Schade, dabei macht Dein Schriftbild einen guten Eindruck.
<script language="javascript">
Hier fehlt das zwingend benötigte type-Attribut. Das völlig überflüssige language-Attribut lasse weg.
var felder=new Array(4);
Du solltest den JavaScript-Code in einen CDATA-Bereich kleiden.
for(i=0;i<anzahl;i++)
Variablen solltest Du deklarieren.
Cheatah
Wow..
das nenn ich aber mal schnelle Hilfe, Vielen Dank
ich hätte vielleicht noch dazu sagen müssen, dass ich mich erst seit kurzem mit Javascript beschäftige.
d.h. vielleicht geht es noch etwas ausführlicher!?
Vor den elses befindet sich doch ein If !?!
bzw. wie muss ich es denn korrekt schreiben damit If und else zusamen gehören?
CDATA sagt mit gar nix, aber werd ich mal googlen
wie sollte ich i denn deklarieren?
Vielen Dank..
MFG
Hi,
Vor den elses befindet sich doch ein If !?!
Ja, aber kein if.
MfG ChrisB
LOL
Das darf doch nicht wahr sein.. so was offensichtliches und ich seh es nicht!
Dümmer konnte der Fehler ja kaum sein, jetzt funktionierts genauso wie ich das wollte.
THX !!!
Hi,
Das darf doch nicht wahr sein.. so was offensichtliches und ich seh es nicht!
Dümmer konnte der Fehler ja kaum sein, jetzt funktionierts genauso wie ich das wollte.
man Bäume | grep Wald ;-)
Cheatah
Grundlage für Zitat #1349.
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