Hi,
habe ich auch gerade festgestellt. Das liegt an der Umwandlung von einer Floatzahl in einen String.
Wird hier statt toString() die Methode toFixed(2) verwendet, so wird ein String generiert,
der einer Floatzahl mit zwei Nachkommastellen entspricht. Dh. auch die Dezimalstellen .x0 und .00
werden übernommen.
Ich habe mal etwas an Deinem Script gebastelt. Versuche mal folgendes:
Hoffentlich bringt Dich das weiter.
Ciao
Quaese
habe ich auch gerade festgestellt. Das liegt an der Umwandlung von einer Floatzahl in einen String.
Wird hier statt toString() die Methode toFixed(2) verwendet, so wird ein String generiert,
der einer Floatzahl mit zwei Nachkommastellen entspricht. Dh. auch die Dezimalstellen .x0 und .00
werden übernommen.
Ich habe mal etwas an Deinem Script gebastelt. Versuche mal folgendes:
Code:
var optionen = new Array( "m_absaugung",
"m_spuelpistole",
"m_wzbruchkontrolle",
"m_kupplungseinheit");
var preise = new Array();
preise["m_absaugung"] = "11.000,00";
preise["m_spuelpistole"] = "12.000,00";
preise["m_wzbruchkontrolle"] = "13.000,00";
preise["m_kupplungseinheit"] = "14.000,00";
var m_standard = "10.000,00"; <!--Grundmaschinenpreis-->
function preisfelder(){
document.getElementById("m_standardpreisfeld").firstChild.nodeValue = "standard" + m_standard + " EUR";
document.getElementById("m_absaugungpreisfeld").firstChild.nodeValue = "absaugung" + preise["m_absaugung"] + " EUR";
document.getElementById("m_spuelpistolepreisfeld").firstChild.nodeValue = "spuelpistole" + preise["m_spuelpistole"] + " EUR";
document.getElementById("m_wzbruchkontrollepreisfeld").firstChild.nodeValue = "bruchkontrolle" + preise["m_wzbruchkontrolle"] + " EUR";
document.getElementById("m_kupplungseinheitpreisfeld").firstChild.nodeValue = "kupplungs" + preise["m_kupplungseinheit"] + " EUR";
}
// Funktion setzt die Tausendertrennzeichen in einer übergebenen Floatzahl
function setSeparator(varZahl){
// Floatzahl in String mit 2 Nachkommastellen umwandeln
varZahl = varZahl.toFixed(2);
var rxc = new RegExp("\\.");
varZahl = varZahl.replace(rxc, ",");
// Anzahl der Vorkommastellen
var intVorkommastellen = varZahl.length - (varZahl.length - varZahl.indexOf(","));
// Anzahl der Trennzeichen
var intKTrenner = Math.floor((intVorkommastellen - 1) / 3);
// Führende Ziffern vor dem ersten Punkt
var intZiffern = (intVorkommastellen % 3 == 0) ? 3 : (intVorkommastellen % 3);
// Ziffern vor dem ersten Tausendertrennzeichen mit Punkt versehen
strNew = varZahl.substring(0, intZiffern);
// Hilfsstring ohne die bereits behandelten Ziffern
strHelp = varZahl.substr(intZiffern, (varZahl.length - intZiffern));
// Restlichen Tausendergruppen durchlaufen
for(var i=0; i<intKTrenner; i++){
// 3 Ziffern der nächsten Tausendergruppe mit Punkt an String anhängen
strNew += "." + strHelp.substring(0, 3);
// Neuen Hilfsstring ohne die 3 gerade behandelten Ziffern schreiben
strHelp = strHelp.substr(intZiffern, (strHelp.length - intZiffern));
}
// Nachkommastellen anhängen
strNew += varZahl.substring(intVorkommastellen, varZahl.length) + " EUR";
return strNew;
}
function addieren(){
var optionspreis = 0;
for(i in optionen){
if (document.formular.elements[optionen[i]].checked==true){
// Regulärer Ausdruck zum Suchen nach Tausendertrennzeichen
var rxa = new RegExp("\\.");
// Tausendertrennzeichen entfernen
varHelp = preise[optionen[i]].replace(rxa, "");
// Regulärer Ausdruck zum Suchen nach Dezimalkomma
rxa = new RegExp(",");
// Zeichen für Dezimalkomma durch einen Punkt ersetzen
varHelp = varHelp.replace(rxa, ".");
// Float-Wert
var preis = parseFloat(varHelp);
// Zu Optionspreis addieren
optionspreis += preis;
}
}
var rxb = new RegExp("\\.");
m_standard_help = m_standard.replace(rxb, "");
rxb = new RegExp(",");
m_standard_help = m_standard_help.replace(rxb, ".");
m_standard_help = parseFloat(m_standard_help);
var summe = optionspreis + m_standard_help;
// Soll die Summe nicht in m_standard gespeichert werden, muss die nächste Zeile auskommentiert werden
m_standard = setSeparator(summe);
document.getElementById("gesamtpreisfeld").firstChild.nodeValue = setSeparator(summe);
}
Ciao
Quaese