NaN(Not a Number)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • NaN(Not a Number)

    Tach,
    hab folgenden kleinen JavaScript Source Code für ein
    kleines Rechenprogrämmchen geschrieben:


    //---------------------------Prozentrechnen
    function prorechnen()
    {

    //1. Wert wird aus Textfeld gelesen
    x=window.document.formpro.wert1.value;
    //2. Wert wird aus Textfeld gelesen
    y=window.document.formpro.wert2.value;

    z = (x*100)/y;
    //Wenn Ergebnis NaN(Not a Number) Hinweis ausgeben
    if ("z==NaN")
    {
    alert('Sie haben keinen gültigen Zahlenwert eingegeben!');
    }
    else
    {
    }
    //Ergbniss wird ausgegeben +%
    window.document.formpro.erg.value=+z+"%";
    }
    //----------------------------------Ende Script

    Ich bekomme nun jedes mal wenn ich Prozentrechen will diesen Hinweis in dem Alert Fenster(Sie haben keinen gültigen Zahlenwert eingegeben!). Egal ob Zahl oder Buchstabe oder sonstiges.Was kann ich tun???Oder gibt es einen anderen Weg ,um zu Testen ob auch nur Zahlen eingegeben wurden???
    Kann es auch an meinem Browser liegen???(IE 6.0 beta)

    THX
    CU trekkie2003






    [Editiert von trekkie2003 am 10-06-2001 um 15:19]
    www.hsv-hockenheim.com
    www.carl-theodor-schule.de
    www.hockenheimring.de
    www.uni-heidelberg.de

  • #2
    Du musst die Felder erst in Nummern umwandeln - ich glaub die Funktion hiess number() oder int() oder so. Vielleicht weiss http://www.docjs.com mehr.

    Comment


    • #3
      Die Funktion heißt parseInt() für ganzzahlige bzw. parseFloat() für Kommazahlen.

      if(parseInt(z) == "NaN")...

      Alternativ dazu kann man auch Regular Expressions verwenden.

      Comment


      • #4
        THX

        Des funktioniert nicht!
        ich folgendes geschrieben (if-Abfrage):


        if(parseInt(z)=="NaN")
        {
        alert('Dies ist keine gültige Eingabe!');
        }
        else
        {
        }

        Wenn ich das so eingebe, kommt jedesmal die alertbox, egal ob ein Zahlenwert oder z.B. ein Buchstabe eingegeben wurde.

        [Editiert von trekkie2003 am 12-06-2001 um 22:10]
        www.hsv-hockenheim.com
        www.carl-theodor-schule.de
        www.hockenheimring.de
        www.uni-heidelberg.de

        Comment


        • #5
          Re: THX

          Probier mal

          if(!parseInt(z))
          {
          alert('Dies ist keine gültige Eingabe!');
          }
          else
          {
          }

          und in das else-Feld die sonstigen Befehle rein. Klappt bei mir mit IE5.5 und NS4.7

          Comment


          • #6
            NaN

            Ich hab den IE 6.0 beta.
            Ich probiers troztdem.
            THX
            www.hsv-hockenheim.com
            www.carl-theodor-schule.de
            www.hockenheimring.de
            www.uni-heidelberg.de

            Comment


            • #7
              NaN

              Super*freu*
              Es funktioniert!
              Aber kannst du mir mal kurz erklären was
              diese Teil des SourceCodes bewerkstelligt.

              (!parseInt(z))

              parseInt(z) ist mir klar... Nur was bedeutet das Ausrufezeichen. Was ist der Unterschied von != und !. Oder hat es sogar etwas total anderes zu sagen.

              Es wäre net, wenn du mir das kurz erklären könntest.
              Und normal ist doch parsInt nur für gerade Zahlen gedacht oder???

              Als danke nochmal

              [Editiert von trekkie2003 am 13-06-2001 um 12:59]
              www.hsv-hockenheim.com
              www.carl-theodor-schule.de
              www.hockenheimring.de
              www.uni-heidelberg.de

              Comment


              • #8
                Erläuterung

                Original geschrieben von trekkie2003
                parseInt(z) ist mir klar... Nur was bedeutet das Ausrufezeichen. Was ist der Unterschied von != und !. Oder hat es sogar etwas total anderes zu sagen.
                != ist ein logischer Operator und bedeutet ungleich. Also z.B. "Birnen" != "Aepfel" weil die Strings nicht übereinstimmen.

                Ein einfaches Ausrufezeichen vor einer Rechenoperation (also auch Befehlssyntax) bedeutet, dass der zu testende Ausddruck unwahr sein muss.
                Wenn du z.B. testen willst, ob der Browser den Ausdruck document.all NICHT versteht (weil es nicht der Internet Explorer bzw. Opera ist) und dementsprechend anderer Code ausgeführt werden soll, kannst du das folgendermaßen machen:

                if(!document.all)

                Das bedeutet nichts anderes als das gefragt, ob document.all NICHT vorhanden ist. Und genauso läuft es mit !parseInt(z). Wenn KEINE Zahl zurückgegeben wird, wird der Rechenausdruck unwahr bzw. NaN und der betreffende Code ausgeführt.

                Ist das nun klarer geworden?
                Wenn nicht, schau mal unter http://www.teamone.de/selfhtml/tecm.htm#a4 nach, dort wird auch die Funktion isNaN() erklärt, mit der du die Abfrage auch hättest schreiben können.

                Ob die Zahl gerade oder ungerade ist, ist für parseInt() ziemlich egal. Es werden nur ganze Zahlen geparset.

                hth

                Comment


                • #9
                  THX!
                  Super erklärt. Jetzt hab ich das verstanden.

                  [Editiert von trekkie2003 am 14-06-2001 um 12:22]
                  www.hsv-hockenheim.com
                  www.carl-theodor-schule.de
                  www.hockenheimring.de
                  www.uni-heidelberg.de

                  Comment

                  Working...
                  X