Julius Hacker: Größer als Operator funktioniert nicht ganz korrekt

Hallo Forum :-)

Ich hab für http://www.kolonialkrieg.de in den letzten paar tagen ein kleines JavaScript gemacht.
Zu finden momentan unter http://www.finalfuture.de/test.htm.
Funktioniert auch alles schön und gut wie sich der Programmierer von KolonialKrieg.de sich das vorstellt.
Nur einen kleinen Bug kriege ich aus dem Script nicht raus:

Wenn ich unter Angreifer im Feld "Stufe vom Exerzierplatz" einen Wert größer als 20 eingebe, soll eine alertmeldung erscheinen, die dem Benutzer sagt, dass er einen ungültigen Wert eingegeben hat.
Soweit sogut solange man vor den Wert keine Null stellt.
Wenn ich jetzt aber z.B. 022 schreibe, erscheint keine Alert-Box, obwohl
der Wert doch immernoch größer als 20 ist.

Die ganze if-abfrage dazu sieht so aus:

if(parseInt(document.getElementById('angreifer').elements['angreiferexerzier'].value) > 20){
   alert("Der Exerzierplatz kann hoechstens bis auf Stufe 20 gebaut werden!");
   }
else{
   ...
   }

Wisst ihr was ich da falsch mache bzw. noch einbauen muss?

Schonmal danke im Vorraus!

mfg
Julius

  1. Hi,

    Soweit sogut solange man vor den Wert keine Null stellt.
    Wenn ich jetzt aber z.B. 022 schreibe, erscheint keine Alert-Box, obwohl
    der Wert doch immernoch größer als 20 ist.

    Nein. Eine führende 0 bedeutet, daß die Zahl eine Oktalzahl ist.
    022 ist also 2*8 + 2 = 18. 18 ist nicht größer als 20.

    Wisst ihr was ich da falsch mache bzw. noch einbauen muss?

    Du mußt führende Nullen vorher entfernen, damit die Zahl nicht als Oktalzahl interpretiert wird.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
  2. Hallo,

    Wenn ich jetzt aber z.B. 022 schreibe, erscheint keine Alert-Box, obwohl
    der Wert doch immernoch größer als 20 ist.

    Die ganze if-abfrage dazu sieht so aus:

    if(parseInt(document.getElementById('angreifer').elements['angreiferexerzier'].value) > 20){
       alert("Der Exerzierplatz kann hoechstens bis auf Stufe 20 gebaut werden!");
       }
    else{
       ...
       }

    "022" wird als Oktalzahl (dezimal 18) interpretiert.

    Schreibe den optionalen Basis-Parameter (hier also 10) mit dazu:

    if(parseInt(document.getElementById('angreifer').elements['angreiferexerzier'].value,10) > 20){...

    MfG, Thomas

    1. Hoi,

      "022" wird als Oktalzahl (dezimal 18) interpretiert.

      Gut zu wissen :)

      Schreibe den optionalen Basis-Parameter (hier also 10) mit dazu:

      Danke das hat mit sofort einsetzender Wirkung den Bug entfernt :)

      mfg
      Julius