Stephan Ullmann: Variable Variablen

Hi

Ich hab erst neulich mit JScript angefangen und natürlich stosse ich schon auf die ersten Problemchen. Ich möchte einer Funktion den Namen einer Variablen
übergeben und dieser Funktion damit mitteilen, welche Variable Sie zu verändern hat.

Also:

function MachWas(variablenname)
{
 window.opener.document.formualaryzb.'variablenname'.value = 1223344;
}

Das Problem ist, dass weder mit noch ohne Anführungszeichen was sinnvolles dabei herrauskommt....hat jemand ne Ahnung ob sowas prinzipiell mit JScript möglich ist?

MfG
Stephan

  1. Hi!

    function MachWas(variablenname)
    {
    window.opener.document.formualaryzb.'variablenname'.value = 1223344;
    }

    In diesem speziellen Fall (!) wuerdest Du da mit
      window.opener.document.formualaryzb[variablenname].value = 1223344;
    machen. Ganz allgemein kann man die eval() Funktion verwenden, allerdings haben Anfaenger damit regelmaessig Probleme, weshalb ich Dir die nicht unbedingt empfehlen moechte.

    So long

    1. Hi,

      In diesem speziellen Fall (!) wuerdest Du da mit
      window.opener.document.formualaryzb[variablenname].value = 1223344;

      Wohl eher mit document.opener.document.formularyzb.elements[varname].value = wert;

      machen. Ganz allgemein kann man die eval() Funktion verwenden, allerdings haben
      Anfaenger damit regelmaessig Probleme, weshalb ich Dir die nicht unbedingt empfehlen moechte.

      eval() ist generell nicht zu empfehlen und aeussterst unelegant - aber auch verdammt maechtig ;-)
      Sozusagen die dunkle Seite der Macht *g*

      Gruss,
       Christian
       http://wwwtech.de

      1. Hi,

        Wohl eher mit document.opener.document.formularyzb.elements[varname].value = wert;

        du solltest aber nicht vergessen, dass du den elements[varname] als string an die Funktion übergeben musst!!

        Also in etwa so:

        onChange="MachWas('feldname')"

        dann wird ein string durchgereicht und javascript weiß, dass wir hier einen string haben.

        By Ed X

      2. eval() ist generell nicht zu empfehlen und aeussterst unelegant - aber auch verdammt maechtig ;-)

        Hi CK,

        wieso ist denn eval() nicht zu empfehlen bzw. unelegant?

        Sozusagen die dunkle Seite der Macht *g*

        *loool* & *rofl*

        Marc

        1. Hi mac,

          wieso ist denn eval() nicht zu empfehlen bzw. unelegant?

          a) Es ist unsicher. Bei einer String-Verarbeitung kann bei einem unerwartetem input sauschnell was
          schief gehen.
          b) Es ist fuerchterlich unuebersichtlich. Woher soll jemand, oder sogar du nach ein paar Wochen,
          wissen, was in dem String steht, den man 10 000 Zeilen vorher zusammengesetzt hat? ;-)
          c) Es ist lahmarschig, und zwar sehr lahmarschig.

          Klar, manchmal laesst es sich nicht vermeiden und manchmal ist es schlicht die einfachste Loesung.
          Aber nach Moeglichkeit sollte man immer auf eval() verzichten.

          *loool* & *rofl*

          (c) by Gero ;-)

          Gruss,
           Christian
           http://wwwtech.de

      3. Hi again!

        In diesem speziellen Fall (!) wuerdest Du da mit
        window.opener.document.formualaryzb[variablenname].value = 1223344;
        Wohl eher mit document.opener.document.formularyzb.elements[varname].value = wert;

        Nein, das ist etwas anderes. Ueber Dein Konstrukt kann man nur auf Formularelemente zugreifen (die im elements-Array aufgelistet sind), ueber mein Konstrukt aber auf alle Eigenschaften des angegebenen Formulars. Warum mein Konstrukt ueberhaupt gueltig ist, erfaehrst Du hier: </selfhtml/sfarchiv/1999_3/t06448.htm#a31423>. (Zusammenfassung: "Properties and arrays in JavaScript are intimately related; in fact, they are different interfaces to the same data structure.")

        eval() ist generell nicht zu empfehlen und aeussterst unelegant - aber auch verdammt maechtig ;-)

        Windows ist generell scheisse - eine Aussage derselben Preisklasse, wie ich finde. Nein, eval() hat eine ganz bestimmte Funktion und "sein" Anwendungsgebiet, und es ist gut in seinem Job. Es ist nur so, dass viele damit nicht umgehen koennen, weil ihnen das Vorstellungsvermoegen dafuer fehlt, was da eigentlich passiert, und dann entstehen ziemlich abenteuerlich Konstruktionen. Aber das ist nicht die Schuld von eval(). Ich verwende es aber auch nur dann, wenn es wirklich sinnvoll ist.

        So long

        1. Hi du,

          Nein, das ist etwas anderes. Ueber Dein Konstrukt kann man nur auf Formularelemente zugreifen (die im elements-Array

          aufgelistet sind), ueber mein Konstrukt aber auf alle Eigenschaften des angegebenen Formulars. Warum mein Konstrukt

          ueberhaupt gueltig ist, erfaehrst Du hier: </selfhtml/sfarchiv/1999_3/t06448.htm#a31423>. (Zusammenfassung:

          "Properties and arrays in JavaScript are intimately related; in fact, they are different interfaces to the same data

          structure.")

          Ahso - das war mir nicht bekannt.

          Windows ist generell scheisse - eine Aussage derselben Preisklasse, wie ich finde.

          Was ist daran falsch? ;-)

          Ne, mal im Ernst: das habe ich so nicht gesagt, das ist aus dem Zusammenhang gerissen.

          Nein, eval() hat eine ganz bestimmte Funktion und "sein" Anwendungsgebiet, und es ist gut in seinem Job. Es ist nur so,

          dass viele damit nicht umgehen koennen, weil ihnen das Vorstellungsvermoegen dafuer fehlt, was da eigentlich passiert,

          und dann entstehen ziemlich abenteuerlich Konstruktionen. Aber das ist nicht die Schuld von eval(). Ich verwende es

          aber auch nur dann, wenn es wirklich sinnvoll ist.

          Naemlich genau so hab ich es geschrieben - oder zumindest war es so gemeint.

          Gruss,

          Christian

          http://wwwtech.de