Cruz: value wird als String übergeben, brauche aber interger

Hi Guys!

Ich brauche grad mal einen kurzen Tipp. Ich versuche in einem Formular die Summer einiger Eingabefelder zu berechnen und sie in einem "Gesamt" Feld auszugeben. Die Felder sind alle type=text.

In den Eingabefeldern habe ich onBlur="SumUp(this.value)" stehen.

Die Funktion sieht so aus:

function SumUp(sum) {
document.forms[0].Summe.value=eval(document.forms[0].Summe.value + sum);
}

ich dachte eval() errechnet den Wert, aber irgendwie werden die Zahlen nur aneinandergereiht.
Also z.B., ich tippe ins erste Feld 1 und ins 2. Feld 2, dann steht in der Summe 12 anstelle von 3. Offensichtlich werden alle Zahlen als String interpretiert und einfach zusammengefügt.

Kann mir jemand das fehlende Puzzlestück geben?

Dank und Gruß
Cruz

  1. Hi Cruz!

    function SumUp(sum) {
    document.forms[0].Summe.value=eval(document.forms[0].Summe.value + sum);
    }

    1. eval() ist an dieser Stelle voellig ueberfluessig --> Weglassen.
    2. Die value-Eigenschaft eines Formularfelds ist nun mal vom Typ String, und wenn Du auf Strings den + Operator anwendest, dann werden sie verkettet. Und daran aendert sich auch nichts, wenn der Inhalt eines solchen Strings wie eine Zahl *aussieht*. --> Mit parseInt() oder parseFloat() in eine Zahl umwandeln.

    <../../tecm.htm#a3>
    http://developer.netscape.com/docs/manuals/js/client/jsref/toplev.htm#1064132
    Ausserdem zur Vorwarnung gleich noch:
    <../../sfarchiv/1999_2/t03219.htm>
    <../../sfarchiv/1999_4/t08822.htm>

    Calocybe