Markus Möller: Formular-Feld zur Laufzeit mit Namen ansprechen

Hallo zusammen!
Ich möchte mit einer JavaScript-Funktion Formularfelder ansprechen:
Der Name des Feldes wird aber erst zur Laufzeit als Parameter übergeben. Also in etwa soetwas:

function checkField (fieldname)

Wie kann ich nun das Feld ansprechen, also einen Wert zuweisen?
Ich hab's schon mit eval versucht, also so:
eval("document.detailform." + field + ".value")="blabla";

Das gibt aber die folgenden Meldungen:
Warnung: function eval must be called directly, and not by way of a function of another name.
Fehler: invalid assignment left-hand side

Wer kann mir da weiterhelfen?

Danke im Vorraus!

P.S: Natürlich gäbe es die Möglichkeit, anstatt des Feldnamens den Index zu übergeben. Dies gestalltet sich in meiner Anwendung aber sehr schwierig, wenn nicht sogar unmöglich.

  1. Hoi,

    function checkField (fieldname)

    Warum uebergibst du keine Referenz auf das Feld?

    Wie kann ich nun das Feld ansprechen, also einen Wert zuweisen?
    Ich hab's schon mit eval versucht, also so:
    eval("document.detailform." + field + ".value")="blabla";`

    document.forms["detailform"][field].value

    oder

    document.forms.detailform[field].value

    oder

    document.forms.detailform.elements[field].value

    oder, oder, oder...

    Das gibt aber die folgenden Meldungen:
    Warnung: function eval must be called directly, and not by way
    of a function of another name.
    Fehler: invalid assignment left-hand side

    Kein Wunder.

    Gruesse,
     CK

    1. Hallo und Danke

      document.forms.detailform.elements[field].value

      Ja, das hatte ich in SELFHTML gesucht. Da steht das aber leider nicht.
      Na ja, jetzt läuft's ja.

      Vielen Dank!

  2. Wie kann ich nun das Feld ansprechen, also einen Wert zuweisen?
    Ich hab's schon mit eval versucht, also so:
    eval("document.detailform." + field + ".value")="blabla";

    Vorab:
    Die Versionen von Markus sind besser. Aber wenns wirklich eval() sein muss dann alles ins eval() schreiben. Also:
      eval("document.detailform." + field + ".value='blabla");
    oder
      eval("document.detailform." + field + ".value='" + varName + "'");
    o.ä.

    Reinhard