Hoi ,
Maar zet deze functie ook al niet om naar strings ?
Zeker, maar die houdt nog geen rekening met de omzetting van punten naar komma's, en dan wordt ie een stuk lastiger. En zo is het een stuk simpeler:
[JS]rekenPrijs = parseFloat(prijsString); // naar echt getal
rekenPrijs = rekenPrijs.toFixed(2); // altijd 2 cijfers achter de punt
[/JS]
Verder heb ik vroeger eens geleerd "eval is evil" (waarom weet ik ook niet meer, maar dat is wel te Google'en).
Zo ben ik maar eens op mijn eigen lego-manier aan het knutselen geslagen:
[JS]var aantal_1, aantal_2, aantal_3, aantal_4;
var prijs_1, prijs_2, prijs_3, prijs_4;
var totaal_1, totaal_2, totaal_3, totaal_4;
function berekenRij(i){
var aantalString = document.getElementById('aantal_'+i).value; // string
var aantalGetal = parseFloat(aantalString); // naar echt getal
if (i=='1'){aantal_1 = aantalGetal;} // onthouden
if (i=='2'){aantal_2 = aantalGetal;} // onthouden
if (i=='3'){aantal_3 = aantalGetal;} // onthouden
if (i=='4'){aantal_4 = aantalGetal;} // onthouden
var prijsString = document.getElementById('prijs_'+i).value; // string
if (prijsString.indexOf(',')){ // als er een komma in staat
var prijsString = prijsString.replace(',','.'); // van komma naar punt
}
rekenPrijs = parseFloat(prijsString); // naar echt getal
rekenPrijs = rekenPrijs.toFixed(2); // altijd 2 cijfers achter de punt
if (i=='1'){ prijs_1 = rekenPrijs; } // onthouden
if (i=='2'){ prijs_2 = rekenPrijs; } // onthouden
if (i=='3'){ prijs_3 = rekenPrijs; } // onthouden
if (i=='4'){ prijs_4 = rekenPrijs; } // onthouden
totaalGetal = (aantalGetal * rekenPrijs).toFixed(2); // totaal berekenen
if (i=='1'){ totaal_1 = totaalGetal; } // onthouden
if (i=='2'){ totaal_2 = totaalGetal; } // onthouden
if (i=='3'){ totaal_3 = totaalGetal; } // onthouden
if (i=='4'){ totaal_4 = totaalGetal; } // onthouden
totaalString = totaalGetal.toString(); // string van maken
totaalString = totaalString.replace('.',','); // van punt naar komma
if (totaalString =='NaN'){ // als geen getal ergens
document.getElementById('totaal_'+i).value = ''; // vakje leeg laten
}
else {
document.getElementById('totaal_'+i).value = totaalString; // invullen in vakje
}
}
[/JS]
Het kan waarschijnlijk ook anders en compacter.
- Principe: [van ingevulde strings (met komma) naar getallen met punt] > [rekenen met de getallen] > [terug naar strings met komma's voor op het scherm].
- Resultaat: www.developerscorner.nl/csshunter/tests/komma-punt-nw-1.htm
- Hij werkt ook als je € 4,-- invult i.p.v. € 4,00.

- Alleen de rij-bewerkingen zitten hierin; de optelsommen moeten nog volgen (wel zijn de te gebruiken variabelen alvast klaargezet).
Misschien is dat wat minder Chinees?

Met vriendelijke groet,
CSShunter