mmofacts.com

JavaScript Berechnung

gepostet vor 18 Jahre, 1 Monat von pHoEnIx-sTyLe
Hi,
ich mal wieder ^^. hab hier folgendes problem: Ich würde gern durch aktivieren und deaktivieren einer checkbox etwas in einem anderen Feld berechnen lassen. Mein Problem ist jedoch dass das ganze nicht addiert wird. die zu addierende Zahl wird einfach dahinter ins feld geschrieben.
Hier mal mein Ansatz:






Hoffe jmd kann mir helfn.
gepostet vor 18 Jahre, 1 Monat von Störti
function calculate(money) {
document.Testform.Arti.value = parseInt(document.Testform.Arti.value) + parseInt(document.Testform.Art.value);
}

Das liegt daran, dass document.Testform.Arti.value keine Zahl ist, sondern ein String, und der "+"-Operator ist in Javascript netterweise für Strings überladen und verkettet diese. Mit parseInt() erzwingst du eine Typumwandlung zu Integer und der+-Operator ist, wie du es haben willst, ein Additionsoperator.
gepostet vor 18 Jahre, 1 Monat von Itchy
Arti.value ist vom Typ "String" und keine Zahl. Du mußt das zunächst in eine Zahl konvertieren.
document.Testform.Arti.value = document.Testform.Arti.value.toFixed(0) + document.Testform.Art.value.toFixed(0);
weiß leider nicht, ob es bessere Methoden zur Typkonvertierung gibt, aber das sollte funktionieren
Edit: ah, die anderen wissen mehr
gepostet vor 18 Jahre, 1 Monat von pHoEnIx-sTyLe
ah ok stimmt. daran hatte ich nicht. thx für die schnelle hilfe
gepostet vor 18 Jahre, 1 Monat von Todi42
Einfachste Theorie, wäre wohl, das document.Testform.Arti.value ein Text ist und wenn man den gleichen Text noch einmal drauf 'addiert", wird dieser eben angehängt. Du möchtest den Text wahrscheinlich erst als Zahlenwert interpretieren, dann Deine 400 drauf zählen und es dann wieder in einen Text wandeln.
gepostet vor 18 Jahre, 1 Monat von pHoEnIx-sTyLe
@ Störti: Deine Lösung klappt nicht ganz. Dann wird mir NAN (Not a Number) ausgegeben.
Ok hat sich geklärt. war mein fehler.
gepostet vor 18 Jahre, 1 Monat von Störti

function calculate(money) {
document.Testform.Arti.value = ( parseInt(document.Testform.Arti.value) + parseInt(document.Testform.Art.value) ).toString();
}

Rein interessehalber, (Javascript castet ja auch alleine zum richtigen Typ), würde das obere Script funktionieren?

Auf diese Diskussion antworten