Ich versuche eine try-catch-finally-Anweisung zu verwenden, um Benutzereingaben zu überprüfen und dann zur nächsten Seite weiterzugehen, wenn kein Fehler vorliegt (ich weiß, es gibt einfachere Möglichkeiten, dies zu tun, aber ich bin verpflichtet, einen Versuch zu versuchen - Fang-endlich). In diesem Fall: foo ist die Eingabe des Benutzers, die Eingabe muss eine Zahl zwischen 0 und 100 sein, und displayDiagram() bringt den Benutzer zur nächsten Seite.Verwenden Sie eine else-if-Anweisung in einem try-Catch-finally
Alles funktioniert für mich bis zum endgültigen Block. Wenn der Benutzer überhaupt nichts eingibt, wird mit der nächsten Folie fortgefahren. Wie verhindere ich das Vorrücken, wenn nichts eingegeben wurde?
Hier ist der Code:
try {
if (foo == "") throw "Enter your estimated score";
if (isNaN(foo)) throw "Only use numbers for your estimated score";
if (foo < 0) throw "Estimated score is not valid. Enter a higher number";
if (foo > 100) throw "Estimated score is too high. Enter a lower number";
}
catch(err) {
document.getElementById("fooMessage").innerHTML = err;
document.getElementById("fooInput").style.borderColor = "red";
}
finally {
if (err = undefined) {
displayDiagram();
}
}
Ein weiterer ich schließlich enthält versucht haben, Block:
Irgendwelche Ideenfinally {
if (preScore >= 0 && preScore <= 100) {
displayDiagram();
} else if (typeof preScore != "string") {
displayDiagram();
}
}
? Vielen Dank!
Hinweis: Zuweisungsoperator vs Vergleich. '=' vs '==' – ippi
hinweis 2: err ist nur * sichtbar * in 'catch' - so' == 'nicht reparieren das zugrunde liegende Problem –
in der Tat, ich denke, der Code in der Frage hat einen Tippfehler, weil' If (err = undefined) 'würde ** nie ** wahr sein, und würde wahrscheinlich einen Fehler werfen - so' displayDiagram' würde ** nie ** ausgeführt werden. der einzige Weg, der jemals laufen würde, wäre, wenn es einen 'var err' gab, der undefiniert ** war und ** der verwendete Code' == 'anstelle von' = '- in diesem Fall würde' displayDiagram ** ** immer ** laufen Egal ob –