Hallo,
function kommazupunkt(zahl) {
zahl=zahl.toString();
zahl=zahl.replace(/,/,".");
zahl=parseFloat(zahl);
return zahl;
}
diese Funktion ist sinnlos. Anscheinend erwartet sie einen Zahlenwert. Den wandelt sie dann in einen String um (mit beliebig vielen Dezimalstellen), ersetzt in diesem String dann Kommas durch Punkte (obwohl ein Komma in diesem String gar nicht vorkommen kann), und versucht dann den String wieder als Zahl zu interpretieren. Das Ergebnis sollte also wieder der ursprüngliche Zahlenwert sein. Mit anderen Worten: Die Funktion tut nichts, was man irgendwie feststellen könnte.
> ~~~javascript
function perc1() {
> r=document.getElementById("rabatt1").value;
> s=document.getElementById("summe1").value;
> r=kommazupunkt(r);
> s=kommazupunkt(s);
> erg=s*(r/100);
> document.getElementById("euro1").value = erg.toFixed(2);
> }
Hier rufst du kommazupunkt() mit Strings als Argument auf; es erscheint mir aber witzlos, toString() auf einen String anzuwenden. Ich bin mir nicht mal sicher, ob toString() für Strings überhaupt implementiert ist.
Nenn doch deine erste Funktion ParseStringToFloat(), und lass den Aufruf von toString() am Anfang einfach weg. Dann ergibt sie nämlich Sinn: Das Argument ist die String-Darstellung eines Zahlenwertes, wahlweise mit Punkt oder Komma als Dezimalzeichen, und das Ergebnis ist der tatsächliche Zahlenwert.
Man kann den Code natürlich noch schöner verschachteln, aber so ist er für einen newbie besser lesbar (hoffe ich)
Das ist fraglich. Für mich (Programmierer seit fast 30 Jahren) sind zwei verschachtelte Funktionsaufrufe leichter nachvollziehbar, als wenn sich der Typ einer Variablen plötzlich ändert. Muss jeder selbst wissen ...
Ciao,
Martin
Noch Fragen? - Ich weiß es auch nicht.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(