Julia: Problem: alert-Anweisung innerhalb von einer If Verzweigung

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>

  1. 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

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. 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

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Ü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

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. 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

          --
          Die letzten Worte des Polizisten:
          Ich hab mitgezählt: Sechs Schuss, jetzt hat er keine Munition mehr!