Hallo,
eine Bitte vorab: Du stellst selbst schon fest, dass dein Problem in erster Linie ein Javascript-Problem ist. Warum machst du es potentiellen Helfern dann komplizierter als nötig, indem du den PHP-Code postest, der das JS erzeugt?
<input type='text' name='preis[".$i."]' value='".$preis[$i]."' disabled='disabled' style='text-align:right;' onChange='javascript:aktGesKosten();' size='5' />
Erstens heißt der Eventhandler onchange (und nicht onChange), aber HTML ist da großzügig. Zweitens ist das Label "javascript:" sinnlos und überflüssig.
function aktKosten(grundpreis,i) {
this.preis[i].value = grundpreis*this.menge_bestellt[i].value;
}
Diese Funktion wird durch den Eventhandler des input-Elements aufgerufen. Was repräsentiert "this" also in diesem Kontext? - Genau, das input-Elementobjekt selbst. Das hat zwar eine value-Eigenschaft, aber keine Eigenschaft namens menge\_bestellt, die sich auch noch wie ein Array indizieren ließe. Mach dir ruhig eine Skizze über die Beziehungen der Objekte untereinander.
Außerdem lässt du dich verleiten, die Javascript-Objekte, die den input-Elementen entsprechen, als Arrays anzusprechen, nur weil du ihnen Namen gegeben hast, die eckige Klammern enthalten. Das ist falsch. Dein input-Element hat beispielsweise den Namen "preis[3]", das ist kein Array, in dem du das Element mit dem Index 3 adressieren kannst!
> ~~~javascript
function aktGesKosten() {
> geskost = 0.00;
> for (int i=0; i < this.preis.length; i++ ) {
> geskost += this.preis[i];
> }
> this.gesamtkosten.value = geskost;
> }
Wo oder in welchem Kontext wird diese Funktion aufgerufen? Vermutlich hat this auch hier nicht den Wert, den du erwartest.
So long,
Martin
Wer morgens zerknittert aufsteht, hat den ganzen Tag Gelegenheit, sich zu entfalten.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(