Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => Ajax Fragen => Thema gestartet von: dobra am November 10, 2009, 20:59:34

Titel: JS - Variable addieren
Beitrag von: dobra am November 10, 2009, 20:59:34
Hallo,

ich möchte mit js Variable addieren die aber formatiert gespeichert sind

         $result{_cross1_preis} = main::fp($xpreis);
               $result{_cross1_preis} =~ s/€/€/gs;
also resultGpreis = € 11.990,00 usw

mit
var resultTotal = parseInt(resultGpreis) + parseInt(resultCross1_preis) + parseInt(resultCross2_preis);
bekomme ich "NaN"

Habe schon ne ganze weile gegoogelt aber keine Lösung (oder nicht den richtigen Suchbegriff) gefunden.
Titel: Re: JS - Variable addieren
Beitrag von: ahe am November 10, 2009, 22:58:28
Hallo dobra,

die folgende Umrechnungsfunktion ist mit Sicherheit nicht die eleganteste Möglichkeit, aber es sollte seinen Zweck erfüllen  8)

<script type="text/javascript">
function makefloat(str) {
str = str.replace("&#128; ", "");
str = str.replace(".", "");
str = str.replace(",", ".");
return parseFloat(str);
}

var preis1 = '&#128; 11.990,00';
var preis2 = '&#128; 1.010,99';
document.writeln(makefloat(preis1) + makefloat(preis2));
</script>
Titel: Re: JS - Variable addieren
Beitrag von: dobra am November 11, 2009, 06:01:34
Hallo ahe,

Danke für das Beispiel!

aber wenn ich das in die HTML-Vorlage schreibe, meldet die Konsole "resultGpreis is not defined"

schreibe ich's SO in die ajax_config.js (in der ja die var's definiert werden)

....
....
        var resultGpreis = data['_grundpreis'];
        var resultCross1_preis = data['_cross1_preis'];
        var resultCross2_preis = data['_cross2_preis'];
        var resultCross3_preis = data['_cross3_preis'];

function makefloat(str) {
str = str.replace("&#128; ", "");
str = str.replace(".", "");
str = str.replace(",", ".");
return parseFloat(str);
}

        var resultTotal = makefloat(resultGpreis) + makefloat(resultCross1_preis) + makefloat(resultCross2_preis) + makefloat(resultCross3_preis);

document.getElementById("total").innerHTML = "<b>" + resultTotal + "</b>";
....

würde es funktionieren, wenn's schon ALLE Variablen gibt.
Die werden ja aber erst nach und nach abgespeichert
= im ersten Schritt gibt's nur "resultGpreis", bei Schritt 2 "resultGpreis + resultCross1_preis" usw
-> es wird nicht nur *nichts* ausgegeben, sondern auch keine ajax-Antworten mehr zurückgegeben wenn eine der var's (noch) nicht existiert.

Ich würde da also sowas wie
if (!length(resultCross1_preis)) {..
brauchen, komme aber nicht drauf, wie ich das in JS schreiben muss  :(

Nachtrag:
hab's doch noch rausgefunden  :)
so geht's
if (resultCross1_preis = 'undefined') {resultCross1_preis = '&#128; 0,00';}