Einfache Zusatzprobleme bei JavaScript

7

Ich bin nicht so gut mit JS und aus irgendeinem Grund, wenn ich versuche, zwei Felder zusammenzufügen, verbindet sie sie, anstatt die Summe zusammenzufügen .. das ist der Code, den ich versuche zu verwenden ..

%Vor%

Die totalVal gibt zurück / alarmiert 68.50378.00 anstatt sie zusammen zu addieren. Könnte mir bitte jemand sagen, wo ich falsch gelaufen bin? :( Die Idee ist, das "totale" Textfeld mit totalVal zu aktualisieren, aber ich bin noch nicht so weit gekommen!

    
SoulieBaby 05.06.2009, 11:56
quelle

11 Antworten

27

Sie müssen Ihre Werte in einen Gleitkommawert konvertieren, bevor Sie sie hinzufügen:

%Vor%

EDIT: Hier ist ein komplettes Beispiel, das eine Überprüfung für NaN enthält:

%Vor%     
Ray Vernagus 05.06.2009, 12:01
quelle
9

Versuchen Sie, die Zahlen in Floats umzuwandeln:

%Vor%     
karim79 05.06.2009 12:00
quelle
4

Jeder andere hat die richtige Idee mit parseFloat .

Ich wollte nur erwähnen, dass ich lieber solche numerischen Werte bereinige (im Gegensatz zur Analyse mit substr):

%Vor%

Dieser Ersetzungsaufruf entfernt alle Zeichen aus der Zeichenfolge außer 0-9 und . (Punkt). Nicht das / g am Ende der Regex. Das ist wichtig, weil ohne sie nur das erste übereinstimmende Vorkommen ersetzt wird.

    
Mark Biek 05.06.2009 12:16
quelle
3

parseFloat macht den Trick.

%Vor%     
samulisoderlund 05.06.2009 12:00
quelle
2

Es behandelt Porto und Zwischensumme als Zeichenfolgen und verkettet sie. Sie könnten so etwas versuchen:

%Vor%

Das sollte es in den Zahlenmodus zwingen.

Dies kann jedoch zu Problemen führen, wenn die Werte keine Zahlen sind. Sie sollten es durch die richtige Anzahl Parsing-Funktionen ausführen und hinzufügen, um sicherzustellen, dass sie richtig analysiert oder sonst Sie mit NaN.

    
Tom Hubbard 05.06.2009 12:01
quelle
1

Sie müssen zuerst die Nummer analysieren. Dies sollte funktionieren.

%Vor%     
Babar 05.06.2009 12:02
quelle
1

Unary plus sollte funktionieren:

%Vor%

Aber wahrscheinlich haben Sie Ihre Porto- und Zwischensummen-Variablen als Zahlen und nicht als Strings definiert, also ...

%Vor%     
Nosredna 05.06.2009 13:09
quelle
1

Ich habe Ihren Code nicht getestet, so dass es möglicherweise andere Probleme gibt, aber der unten beschriebene Fix, der parseFloat verwendet, sollte die Verkettung stoppen und die Nummern zusammenfügen.

%Vor%     
OneSHOT 05.06.2009 12:00
quelle
1

Nachdem ich die gleichen Probleme hatte, untersuchte ich die Funktionen JS parseFloat und parseInt und fand sie schlecht entwickelt.

Also verhindere ich das ganze Problem, indem ich den Wert * 1 des Elements multipliziere, bevor ich sie addiere. Dadurch wird JS gezwungen, das Ergebnis als numerisch zu behandeln, auch wenn der Wert leer ist, damit er korrekt verarbeitet werden kann. Wie folgt:

%Vor%

Angenommen, Sie sehen, dass "el_1" und die Feldnamen in der Form sind.

    
Jan 13.11.2009 12:31
quelle
0

Danke für alle Antworten! Ich werde sie ausprobieren, ich bin mir sicher, dass sie besser sind als meine Lösung:

%Vor%     
SoulieBaby 05.06.2009 12:11
quelle
0

1. einfaches Javascript-Zusatzprogramm

%Vor%     
Lucky 20.11.2012 11:51
quelle

Tags und Links