Kommas durch Punkte ersetzen
Sebastian Becker
- javascript
Hallo,
ich möchte in einem Formular bei von den Nutzern eingegebenen Zahlenwerten eventuelle Kommas durch Punkte ersetzen. Folgende Funktion funktioniert im Prinzip.
--------------- schnipp -----------------
replace(x)
{
str = "";
for (i=0;i<x.length;i++)
{
str += (x.charAt(i)==',')?'.':x.charAt(i);
}
x = str;
}
--------------- schnipp -----------------
Ich bekomme aber Fehler, sobald ich replace() zur weiteren Berechnung verwende:
--------------- schnipp -----------------
d = document;
d.order.total.value =
replace(parseFloat(d.order.item1_price_dollar.value) * parseFloat(d.order.item1_quantity.value) +
parseFloat(d.order.item2_price_dollar.value) * parseFloat(d.order.item2_quantity.value) +
...
)
--------------- schnipp -----------------
Habe ich da irgendetwas übersehen?
Danke für jede Hilfe,
Sebastian becker
Sup!
Ich spekuliere mal, ein return x; am Ende der Funktion könnte Wunder wirken, aber eigentlich bin ich zu müde.
Gruesse,
Bio
Ich spekuliere mal, ein return x; am Ende der Funktion könnte Wunder wirken, aber eigentlich bin ich zu müde.
yupp ! Dummer Fehler von mir:
VB (zumindest bei Access-Modulen) übergibt den Wert wenn man ihn der Funktion zuweist zurück ... oder so ähnlich
JS braucht _natürlich_ ein return (da Java, und damit JS C-ähnlich ist sollte ich das als C-Fan eigentlich wissen *schäm*)
Ich spekuliere mal, ein return x; am Ende der Funktion könnte Wunder wirken, aber eigentlich bin ich zu müde.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ vielleicht lags bei mir daran :)
Mfg McNavc
replace(parseFloat(d.order.item1_price_dollar.value) * parseFloat(d.order.item1_quantity.value) ....
... Zeichenkette * Fließkomma ?
Versuche vielleicht:
replace(x)
{
str = "";
for (i=0;i<x.length;i++)
{
str += (x.charAt(i)==',')?'.':x.charAt(i);
}
x = parseFloat(str);
^^^^^^^^^^
}
Aus der Hüfte geschossen (JS is nicht so sehr meins)
oder liegts daran das du zum Testen in allen Feldern die Zahlen mit ',' statt '.' eingibst und dies nur im ersten Feld auf '.' umstellst ?
1.1 * 2,3 wird vermutlich nicht funktionieren
MfG McNavc
Moin!
--------------- schnipp -----------------
replace(x)
{
str = "";
for (i=0;i<x.length;i++)
{
str += (x.charAt(i)==',')?'.':x.charAt(i);
}
x = str;
}
1. fehlt das return x, wie bereits bemaengelt wurde.
2. bekommst Du mit x eine Float-Zahl uebergeben, willst diese dann aber als String behandeln. Manchmal geschieht die Konvertierung automatisch, ich wuerde aber an den Anfang der Funktion ein
x = x.toString()
setzen.
3. geht das ganze auch viel einfacher, in dem Du Deine Funktion weglaesst und einfach
d.order.total.value = (/* berechnung */).toString().replace(/,/, '.');
schreibst. Siehe http://www.teamone.de/selfhtml/tecl.htm#a19.
So long