Oliver Kurlvink: elements[i].name.value?

hi :)

Ich hänge hier mittlerweile seit Stunden an einem Javascript-Problem fest: Ich habe zwei Formulare in zwei Frames mit den gleichen Form-Elementen, welche auch die gleichen Namen haben. Das erste Formular ist HTMl, das zweite wird per PHP aus einer Datenbank gemacht und mit den in der Datenbank gespeicherter Werten gefüllt. Jetzt sollen diese Werte in das formular im oberen Frame eingesetzt werden. Dazu verwende ich folgende Funktion:

function plopp() {
number = top.form.document.Bestand1.elements.length; top.zurueck.document.zurueckform.datumuhrzeit.value = number;
var i = 0;
while(i < number) {
if (top.form.document.Bestand1.elements[i].type != 'button') {
name=top.form.document.Bestand1.elements[i].name;
top.form.document.Bestand1.name.value = top.php3.document.hiddenform.name.value;
}
i++;
}
}

Grundidee ist folgende: Die Anzahl von Elementen wird ausgelesen und dann jedes dieser elemente von oben nach unten durchgegangen. Der Name des elementes wird in name gespeichert. Dann soll formularname.elementname.elementwert vom einem ins andere Dokument verschoben werden. Das klappt aber nicht, da
top.php3.document.hiddenform.name.value;
nicht den Namen des aktuellen Elements einsetzt, sondern halt nur "name". Wie kann ich erreichen, daß dort der Name des aktuellen Elements eingesetzt wird??

  1. Hallo Oliver!

    Grundidee ist folgende: Die Anzahl von Elementen wird ausgelesen und dann jedes dieser elemente von oben nach unten durchgegangen. Der Name des elementes wird in name gespeichert. Dann soll formularname.elementname.elementwert vom einem ins andere Dokument verschoben werden. Das klappt aber nicht, da
    top.php3.document.hiddenform.name.value;
    nicht den Namen des aktuellen Elements einsetzt, sondern halt nur "name". Wie kann ich erreichen, daß dort der Name des aktuellen Elements eingesetzt wird??

    ... indem Du aus dem Part "top.php3.document.hiddenform"
    und einer Variablen name einen neuen String bastelst und diesen von JavaScript
    erneut interpretieren läßt (also sowas wie selbstmodifizierender Code).
    Dafür gibt's in JS die eval("...")-Funktion.

    Also in etwa wie...

    function plopp(name) {
    ...
    ...

    eval("top.php3.document.hiddenform"+name+".value = number;");

    ...
    }

    Viele Grüße

    Andreas

    1. eval("top.php3.document.hiddenform"+name+".value = number;");

      Thanx, funzt wunderbar!!

  2. Hi!
    Ich hatte letztens ein ähnliches Problem und mir wurde hier eine gute Lösung präsentiert.
    Um per Variable auf ein Feld zuzzugreifen mußt Du

    document.forms[0].elements[name].value

    eingeben. Du kannst also bei elements sowohl eine  Indexzahl, wie auch den Namen durch eine Variable eingeben.

    Ihc hoffe ich konnte helfen.

    Janko