Problem: alert-Anweisung innerhalb von einer If Verzweigung
Julia
- javascript
Hallo an alle,
wer kann mir beim folgenden Quelltext helfen. Beim Programmablauf gibt das Script keine Meldung, wie z.B. "Ihr Prüfungsergebnis ist ungenügend" aus.
Findet jemand den Fehler?
Im Voraus: Vielen lieben Dank für eure Hilfe!
LG, Julia
<html>
<Script Language = "JavaScript">
function auswerten()
{
pz=document.formular.punktzahl.value;
if(pz=0&&pz<30){
alert("Ihr Prüfungsergebnis ist ungenügend");
}
if(pz<50&&pz=30){
alert("Ihr Prüfungsergebnis ist mangelhaft");
}
if(pz<67&&pz=50){
alert("Ihr Prüfungsergebnis ist ausreichend");
}
if(pz<81&&pz=67){
alert("Ihr Prüfungsergebnis ist befriedigend");
}
if(pz<92&&pz=81){
alert("Ihr Prüfungsergebnis ist gut");
}
if(pz<=100&&pz>=92){
alert("Ihr Prüfungsergebnis ist sehr gut");
}
}
</script>
<body>
<center>
<h3> Ihr IHK Prüfungsergebnis </h3> <br>
</center>
<form name = "formular">
<center>
<table>
<tr> <td> Ihre Punktzahl
</tr>
<tr>
<td> <input name = "punktzahl"> </input>
</tr>
</table>
<br>
<table>
<input type = "button" value = "Auswertung"
onClick = "auswerten()">
</input>
<input type = "reset">
</input>
</table>
</center>
</body>
</html>
Hi,
DEN Fehler??
<Script Language = "JavaScript">
<script type="text/javascript">
if(pz=0&&pz<30){
Ich übersetze: "Setze pz auf 0 und prüfe, ob pz < 30 ist."
if(pz<50&&pz=30){
"Prüfe ob pz<50 und setze pz=30"
... die anderen "=" analog;
Vergleichsoperator in JavaScript ist "==", ansonsten nimmst du eine Zuweisung vor.
MfG
Rouven
Hi,
if(pz=0&&pz<30){
Ich übersetze: "Setze pz auf 0 und prüfe, ob pz < 30 ist."
Übersetzungsfehler.
Setze pz auf 0 und werte das Ergebnis der Zuweisung (also den zugewiesenen Wert) aus.
Da 0 false entspricht, wird der zweite Operand des &&-Operators nichts mehr am Ergebnis ändern können, wird also gar nicht mehr ausgewertet.
if(pz<50&&pz=30){
"Prüfe ob pz<50 und setze pz=30"
Etwas genauer:
Prüfe, ob pz < 50. Da das zutrifft (da pz ja auf 0 gesetzt wurde), werte auch den zweiten Operand des &&-Operators aus.
D.h. setze pz auf 30 und werte das Ergebnis der Zuweisung aus (30 wird als true interpretiert.
true und true ergibt true, also ab in den if-Zweig ...
cu,
Andreas
Übersetzungsfehler.
Ähm ja, da hast du natürlich Recht. Genau genommen war ich mir nicht ganz sicher bei der Analyse, deswegen hab ich den kurzen Ausweg genommen...
Frage am Rande und ohne ausprobieren, was wäre
if (pz=1 || false)
Wäre das true, weil pz=1 = 1 != false? Ich fall da immer wieder drauf rein, irgendwie hab ich im Hinterkopf, dass eine Zuweisung immer true rausgibt weil sie erfolgreich war...
MfG
Rouven
Hallo,
Frage am Rande und ohne ausprobieren, was wäre
if (pz=1 || false)
Wäre das true, weil pz=1 = 1 != false?
Richtig.
Ich fall da immer wieder drauf rein, irgendwie hab ich im Hinterkopf, dass eine Zuweisung immer true rausgibt weil sie erfolgreich war...
Nein, das stimmt nicht. Eine Zuweisung liefert als Ergebnis des Ausdrucks immer den zugewiesenen Wert. Deshalb funktioniert ja auch eine Anweisung wie z.B.
a = b = c = 400;
Hier wird als erstes die Zuweisung an c ausgeführt, der Ausdruck liefert den Wert 400. Dieser Wert wird auch an b zugewiesen, der Gesamtausdruck liefert abermals 400, so dass der gleiche Wert auch an a zugewiesen wird.
Schönen Abend noch,
Martin