frankx: warum klappt variablen einbau bei form.name nicht?

Hallo,

mit
<form name="form">
<input type="button" value="hallo" name="name1>
gibt:
var abc = document.form.name1.value;
alert (abc); // hallo

var xyz = "name1";
alert(xyz); //name1
var sdf = document.form.xyz.value;
alert (sdf); //bricht ab, Fehlermeldung document.form.xyz.value not defined

geht das so nicht bzw.was ist da falsch?

Dank frankx

  1. eigentlich ist das Doppelposting.

    <form name="form">
    <input type="button" value="hallo" name="name1>
    gibt:
    var abc = document.form.name1.value;
    alert (abc); // hallo

    var xyz = "name1";
    alert(xyz); //name1
    var sdf = document.form.xyz.value;
    alert (sdf); //bricht ab, Fehlermeldung document.form.xyz.value not defined

    Ist logisch, weil es kein Objekt mit dem Namen 'form.xyz' gibt, du möchtest den Indexoperator verwenden der ist für sowas da.

    Struppi.

    1. eigentlich ist das Doppelposting.

      warum? Ich habe extra überlegt, ob ich es an die Antwort von Steffen dranhänge und dachte dann: na, wenn sich jemand hierfür interessiert aber nicht für die Referenzgeschichte, dann nutzt die Antwort vielleicht.

      Aber denken ist eben manchmal Glücksache.

      Extranichtdoppelposter Frankx

    2. Hallo Struppi,

      dank für den Tipp mit dem Indexoperator. Wurde fündig (;-) http://spotlight.de/zforen/jas/m/jas-1132323563-4981.html

      Ist logisch, weil es kein Objekt mit dem Namen 'form.xyz' gibt...

      kapieren tu ich bisher nur, wie ich es umgehen kann. Warum ersetzt denn JS das "xyz", was ja als Variable deklariert wurde, nicht durch den Inhalt? Das klappt doch sonstens auch. Ich wollte ja kein form.xyz sondern form.name1...;

      Dank und Gruß,

      Frankx

      1. Ist logisch, weil es kein Objekt mit dem Namen 'form.xyz' gibt...

        kapieren tu ich bisher nur, wie ich es umgehen kann. Warum ersetzt denn JS das "xyz", was ja als Variable deklariert wurde, nicht durch den Inhalt? Das klappt doch sonstens auch. Ich wollte ja kein form.xyz sondern form.name1...;

        Mit 'sonst' meinst du PHP (oder auch Perl). In JS kann das nicht klappen da es hier kein Möglichkeit gibt die Variabel zu identifizieren gibt. woher soll JS Wissen, dass du nicht 'form.xyz' sondern form[xyz] meinst? es kann ja durchaus auch ein Element mit dem Namen 'xyz' geben.

        Struppi.