Sven Rautenberg: Javascript Bestellformular rechnet ned

Beitrag lesen

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:

  
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

--
My sssignature, my preciousssss!