Stefan Bill: Variable in Zuweisung

Hallo,

Wenn ich einem Element in einer Form einen Wert zuweise mach ich dass ja so:
document.liste.f5.value = "TEST"

Wobei "liste" der Name der form ist und "f5" der Name eines Input Feldes.

Aber wie kann ich jetzt anstatt des richigen Namens für das Input Feld eine Variable verwenden.

z.B.

platz = "f5"
document.liste.platz.value = "TEST"

Wie kann ich Javascript klar machen das "platz" eine Variable ist und er den Wert der
Variable dort einsetzten soll?

Das mit elements[x] kenn ich, will ich aber nicht. Weil ich nicht sagen kann welches Element
f5 jetzt gerade ist.

Danke.
Gruss,
Stefan

  1. Hoi Stefan

    platz = "f5"
    document.liste.platz.value = "TEST"

    Das kannst Du so machen:
    platz = "f5"
    document.liste.platz.value = platz

    und schon funtzt es.

    Ich würde schönheitshalber die Variable platz so deklarieren:
    var platz = "f5"

    Ansonsten führ Dir mal SelfHTML zu gemüte, dort steht das nämlich alles!!

    cheers
    kaepten

    1. Natürlich muss Du jede Zeile mit einem Semikolon ; abschliessen! Aber das weisst Du ja jetzt, weil Du zwischenzeitlich die SelfHTML Doku durchgeachert hast ;-)

      1. Auweia!

        Sorry und Entschuldigung, habe Dich falsch verstanden! Nun kapier ich was Du meinst.

        Aehm, IMHO, geht das so nicht!

        cheers
        kaepten

        1. Sorry und Entschuldigung, habe Dich falsch verstanden! Nun kapier ich was Du meinst.
          Aehm, IMHO, geht das so nicht!

          So wie es Daniela geschrieben hat funktioniert es.

          Übrigens hier auf dem Tisch liegen:
          HTML 4.0 Handbuch von Franzis' und
          Javasript 1.2 von Addison Wesley.

          Eigentlich liegt da noch viel mehr aber das wollt ihr gar nicht alles wissen. :-)

          Gruss,
          Stefan

  2. Hi

    platz = "f5"
    document.liste.platz.value = "TEST"

    versuchsmal mit

    eval("document.liste." + platz +".value = "TEST";");

    Gruss

    Daniela

    1. eval("document.liste." + platz +".value = "TEST";");

      Yep, das funzt.
      Danke.

      Gruss,
      Stefan

  3. Hi Stefan,

    Auch wenn es unter elements im Selfhtml nicht beschrieben ist (oder ich hab` nicht genau genug geschaut ;-), kannst Du Formulare und Elemente nicht nur "Inline", sondern auch als "assoziatives Array" ansprechen.

    Der Beispielcode schaut so aus:

    <html>
    <head>
    <title>Test-Formular</title>
    <script language="javascript">
    function meldedich(frm,fld) {
       alert(document.forms[frm].elements[fld].value);  
       document.forms[frm].elements[fld].value = "habe fertig";
    }
    </script>
    </head>
    <body>
    <h1>Test-formular</h1>
    <form action="" name="meinform" onSubmit="meldedich('meinform','ichbins'); return false;">
    <input type="text" name="ichbins" value="xyz">
    <input type="submit" value="schickmich">
    </form>
    </body>
    </html>

    Vielleicht geht die Übergabe der Namen auch noch eleganter, als sie einfach hinzuschreiben. Aber da sind die DOM-Experten gefragt ;-)

    Gruß AlexBausW.

    1. Hi!

      Auch wenn es unter elements im Selfhtml nicht beschrieben ist (oder ich hab` nicht genau genug geschaut ;-), kannst Du Formulare und Elemente nicht nur "Inline", sondern auch als "assoziatives Array" ansprechen.

      Und um das auf Stefan's Problem zu beziehen:
        document.liste.elements["f5"].value = "TEST";
      tut's auch ohne fehleranfaellifes eval().

      Vielleicht geht die Übergabe der Namen auch noch eleganter, als sie einfach hinzuschreiben.

      Ich wuerde hier ueberhaupt nicht mit Namen arbeiten. Lieber so:

      function meldedich(fldobj) {
             alert(fldobj.value);  
             fldobj.value = "habe fertig";
          }

      und

      <form action="" name="meinform" onSubmit="meldedich(this.ichbins); return false;">

      So lange