wahrscheinlich bin ich blind

Steglich

Aktives Mitglied
Thread Starter
Dabei seit
30.05.2003
Beiträge
206
Reaktionspunkte
0
oder warum wird mir bei folgender Funktion nur die Meldung mit subject ausgegeben, wenn die anderen Felder auch leer sind:
HTML:
function checkForm() {

var checkfelder = new Array();
var meldung = '';

checkfelder[0] = "subject"; // Bezeichnungen der Formularfelder
checkfelder[1] = "EmailText";
checkfelder[2] = "email";

for (var i = 0; i < checkfelder.length; i++) {
    if (document.myForm.elements[checkfelder[i]].value == '') {
        if (meldung == '') {
        		meldung = checkfelder[i];
        } else { 
        		meldung = meldung + ', ' + checkfelder[i];
        }
    }
if (meldung == '') {
    return true;
} else {
    meldung = 'Damit wir die Email korrekt empfangen k&ouml;nnen, sollten Sie bitte noch folgende Felder eingeben:\n' + meldung;
    alert (meldung);
    return false;
}
} // for
} // function checkform
 
hm.. also ich seh keine Fehler.
Evtl liegt der Fehler hier:

document.myForm.elements[checkfelder].value == ''

Heißen die Formular Elemente denn auch "EmailText" und "email" ? Wenn nicht, würde er die ja nicht verarbeiten.
 
Weil das if (meldung = '') im for-loop steht und bei ersten leeren Feld true zurückgibt?

Hint: Es zählen die {}, nicht die Einrückung.
 
Formularfelder richtig

die anderen beiden Formularfelder sind auch richtig angegeben.
Schon langsam komme ich mir richtig blöd vor.
 
Nee.. das ist schon soweit richtig. Innerhalb der Schleife wird halt gefragt ob bisher eine FehlerMeldung existiert. Wenn ja, dann füge den 1. Wert hinzu. Beim nächsten durchlauf wird der Else-Fall wirksam und es wird der 2. oder 3. an die bestehende Meldung gehängt.
 
Nein, es ist falsch. Die Meldung wird bei der Verschachtelung nur dann angezeigt, wenn das erste Feld leer ist. Ansonsten wird der for-Loop sofort abgebrochen. Das 'if (meldung ='') ..' gehört einfach hinter den for-Loop.
 
for Schleife

gerade habe ich festgestellt, dass meine for Schleife nur einmal durchlaufen wird, aber warum?
 
Achsoo, du meinst das 2. meldung==''.

Jo stimmt. Da fehlt eine } vor dem
if (meldung == '') {
return true;
}
 
Steglich schrieb:
gerade habe ich festgestellt, dass meine for Schleife nur einmal durchlaufen wird, aber warum?
Weil du dass geschrieben hast
Code:
for ( ... ) {
    if (...) {
    }

    if (meldung = '') {
        return ...
    }
}
aber das meinst:
Code:
for ( ... ) {
    if (...) {
    }
}
if (meldung = '') {
    return ...
}
 
Thommy schrieb:
Achsoo, du meinst das 2. meldung==''.

Jo stimmt. Da fehlt eine } vor dem
if (meldung == '') {
return true;
}
Genau, das ist der Fehler. Gemeinerweise ist seine Einrückung richtig, aber seine Klammerung nicht.
 
stimmt

Die for Schleife habe ich zu spät zu gemacht.
Vielen Dank.
Aber manchmal ist man so borniert, dass man den Wald vor lauter Bäumen nicht mehr sieht. Sollte vielleicht mal eine Pause machen.
 
Zurück
Oben Unten