Aha, das heißt also, daß ich eine jede Variable dann wahrscheinlich mit ParseInt und ParseFloat vor den Rechenoperationen umwandeln darf, dadurch wahrscheinlich nochmals das gleivhe an neuen "unbekannten" bekomme und so dann zumindest die ergebnisse WIRKLICH berechne.nur dann bin ich nochg ned echt weiter, da bis zur ausgabe dann immer noch ein weiter schritt ist und der besondere spaß mit der Ausgabe der unterschiedlichen Summen mit bezahlart. Ich glaub, sicher daß ich das zwar irgendwie hinkrieg, aber dann wahr sowas von hand-zu-fuß, daß es nimmer schee is.
aus "anz1" müßte ich dann folgendes machen, oder?
anz1=parseInt(document.kontakt.anz1.value);
und aus "preis1"
preis1=parseFloat(document.kontakt.preis1.value);
"ts1" kann ich ja dann direkt berechnen, da "anz1" und "preis1" umgewandelt sind, bzw durch
ts1=parseFloat(document.kontakt.preis1.value)*anz1;
sogar eine zeile sparen
Liege ich mit der Vermutung richtig?
Viele Grüße und Dank
KlaPe
Moin!
der/die besucher/in der Seite wählt bei bedarf für produkt 1 oder 2 (ggf.auch beide) die anzahl der gewünschten artikel über die entsprechenden auswahlfelder aus, wobei die felder mit "0" vorbelegt sind. diese werte multiplizieren sich mit dem festvoreingestellten preis und ergeben die teilsummen ts1/2. durch das ändern von anz1/2 soll in ts1/2 die teilsummen angezeigt werden.
Dein Javascript-Code macht aber was anderes. :)
Du definierst eine Funktion "changed", welche das hier macht:
function changed(obj) {
var anz1;
var anz2;
var preis1;
var preis2;
var ts1 = anz1 * preis1;
var ts2 = anz2 * preis2;
var totall = ts1 + ts2;
var nn;
var vk;
var totalnn = totall + nn;
var totalvk = totall + vk;
}
>
> Es werden viele Variablen angelegt, alle leer, manche "berechnet" - aber nirgendwo ausgegeben.
>
> Hinter dieser Funktion folgt Code, der beim Seitenaufruf einmalig ausgeführt wird:
>
> ~~~javascript
> document.kontakt.ts1.value=ts1;
>
> document.kontakt.ts1.value=ts2;
>
> document.kontakt.totalnn.value=totalnn;
>
> document.kontakt.totalvk.value=totalvk;
>
> document.kontakt.totall.value=totall;
>
> }
>
Die Klammer in der letzten Zeile könnte für einen Javascript-Fehler sorgen, und ansonsten werden hier die Inhalte der bislang nicht vorhandenen und deshalb leeren Variablen den Formularfeldern zugewiesen.
Die Funktion wird bei jeder Veränderung in Formularfeldern aufgerufen.
Was nicht passiert: Die Funktion nimmt die in den Formularfeldern eingegebenen Werte nicht entgegen und rechnet mit DIESEN dann weiter, und sie gibt die Berechnungsergebnisse auch nicht ans Formular zurück. Wobei sowieso zu beachten ist: Das, was in einem Formularfeld steht, wird von Javascript als String behandelt und muß zuallererst mal in eine Zahl umgewandelt werden, wenn man mathematisch korrekte Ergebnisse wünscht. 1 + 2 = 3, aber "1" + "2" = "12".
Auffallend ist, dass du der Funktion im Aufruf jeweils mit "this" das aktuelle Formularfeld mitgibst, davon in deiner Funktion aber keinerlei Gebrauch machst.
- Sven Rautenberg