Sven Rautenberg: Rechenweg mit onKeyup ??

Beitrag lesen

Moin!

du redest immer von einer schleife. Ich sehe keine Schleife.

Hallo Struppi,

klar hat mir Deine Lösung gefallen. Es wäre doch aber schön gewesen, wenn das auch aus der FOR-Schleife heraus funktioniert hätte:

Tut es auch, dein Problem ist PHP nicht Javascript (ich kann kein PHP aber probier's mal).

Gerade _umgekehrt_: Das Problem ist Javascript, nicht PHP.

<? for ($numero=1; $numero<=7; $numero++)

Du musst bei 0 anfangen in den meisten Programiersprachen fangen Arrays bei null an.

Irrelevant! Man kann Schleifen anfangen, wo man will.

funtion rechnen_i(i, f)
{
     var val = f['bez[]'][i].value * f['addit[]'][i].value;
     f['ergebnis[]'][i].value = val;
}

Diese Lösung funktioniert - bitte zweimal rot unterstreichen!

Kern der Sache: Wenn ein Formularfeld "addit[2]" heißt, kann man es nicht mit document.formular.addit[2] ansprechen, weil name[X] in Javascript eine eigene Bedeutung hat - das ist ein Arrayzugriff. Ein einzelnes Formularfeld ist aber kein Array!

Deshalb kann man nur über den Namensindex gehen:
document.formular.elements['addit[2]'] -> greift auf das Formularfeld mit dem Namen "addit[2]" zu.

Den Namen kann man vorher auch als String zusammensetzen lassen:
index = 2
feldname = 'addit['+ index + ']'
document.formular.elements[feldname]

Das ist im Prinzip von der Wirkung her analog zu PHP.

Wenn die einzelnen Formularfelder mit "addit[]" bezeichnet werden, erhält man in PHP zwar ein schönes Array, in Javascript hingegen kann man die einzelnen Felder dann nicht mehr am Namen auseinanderhalten (die heißen ja alle gleich), sondern muß über ein Array zugreifen:

document.formular.elements['addit[]'][2]

Das gilt aber nur, wenn mehr als ein Element namens 'addit[]' vorhanden ist - andernfalls bildet Javascript kein Array. Man müßte also, falls der Sonderfall "nur ein Feld" eintreten kann, mit document.elements['addit[]'].length prüfen, ob es mehrere Elemente gleichen Namens gibt, oder nur eines, und dann entsprechend zugreifen.

Und in PHP kannst du irgendwie das als Array empfangen (in Perl ist das alles viel einfacher).

Ich würde das Gegenteil behaupten. In PHP empfängt man die Daten automatisch als Array.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.