Günter Seidel: Frage zu variablen

Hallo,

habe da eine Frage, bei der ich einfach nicht weiterkomme.
Problem: Ausgabe des Inhalts von Variable "A001" durch Verwendung der Variablen "zahl" und "konstante". Die beiden Beispiele geben leider nur den Variablennamen aus.

<script language="JavaScript">

var A001 = "na also";
var zahl = "001";
var konstante = "A";
var eintrag= konstante+zahl;

</script>

<script language="JavaScript">document.write(konstante+zahl)</script>
<script language="JavaScript">document.write(eintrag)</script>

  1. Natürlich,

    in der ersten Zeile soll konstante+zahl ausgegeben werden und genau das macht er konstante(A) + zahl (001): ausgabe: A001

    die zweite zeile macht exakt das gleiche, nur das du hier den umweg über eintrag gegangen bist.

    alles völlig richtig.

    lg
    mark

    1. Nachfrage:
      Ich möchte aber nicht "A001" sondern "na also" angezeigt bekommen....

      1. wenn du vor hast, den variablennamen dynamisch zu erzeugen und dann auszuwerten, solltest du dich mal mit der eval() funktion beschäftigen..

        lg
        mark

        1. wenn du vor hast, den variablennamen dynamisch zu erzeugen und dann auszuwerten, solltest du dich mal mit der eval() funktion beschäftigen..

          Nein, eval braucht man nur um zur Laufzeit Javascript code auszuführen. Um Variabeln zu erzeugen braucht man das nicht, ist auch kontraproduktiv.

          Struppi.

        2. wenn du vor hast, den variablennamen dynamisch zu erzeugen und dann auszuwerten, solltest du dich mal mit der eval() funktion beschäftigen..

          lg
          mark

          Danke für den Hinweis,

          var eintrag= eval(konstante+zahl);

          gibt das Gewünschte aus.

          Habe gleich in SELFHTML nachgesehen und diesen Satz gelesen, der doch eigentlich das Gegeteil aussagt?

          Erzeugt eine Fehlermeldung, wenn die Zeichenkette Zeichen enthält, die nicht als Teil einer Rechenoperation interpretierbar sind.<

          Aber Haupsache es funktioniert!

          Nochmals Danke für alle Antworten!

          1. var eintrag= eval(konstante+zahl);

            gibt das Gewünschte aus.

            window[konstante+zahl] auch, mit dem Vorteil, das wenn du dort einen Fehler hast auch eine vernüftige Fehlermeldung bekommst, dein Skript schneller ist (eval ist ca. 30 mal langsamer)

            Aber Haupsache es funktioniert!

            Mit der Einstellung wirst du im Internet nicht weit kommen, weil das gleichbedeutend ist mit, "Hauptsache bei mir funktioniert's" und ignorierst dabei, dass es im Internet eben nicht nur die Kombination von Browser/Betriebsystem gibt, die du benutzt.

            Struppi.

            1. var eintrag= eval(konstante+zahl);

              gibt das Gewünschte aus.

              window[konstante+zahl] auch, mit dem Vorteil, das wenn du dort einen Fehler hast auch eine vernüftige Fehlermeldung bekommst, dein Skript schneller ist (eval ist ca. 30 mal langsamer)

              Aber Haupsache es funktioniert!

              Mit der Einstellung wirst du im Internet nicht weit kommen, weil das gleichbedeutend ist mit, "Hauptsache bei mir funktioniert's" und ignorierst dabei, dass es im Internet eben nicht nur die Kombination von Browser/Betriebsystem gibt, die du benutzt.

              Struppi.

              Struppi hat Recht, beutze wenn, 'seine' Variante.
              Ich wusste bisher nicht, das es grundsätzlich ein window array gibt, deswegen mein vorschlag mit eval.
              man lernt eben nie aus...

              lg
              mark

      2. wie wärs mit
        document.write(A001);
        ??

        1. wie wärs mit
          document.write(A001);

          Genau das möchte ich vermeiden, da die Zahl für viele gleichartige Dateien veränderbar sein muß.

          1. wie wärs mit
            document.write(A001);

            Genau das möchte ich vermeiden, da die Zahl für viele gleichartige Dateien veränderbar sein muß.

            siehe mein vorhergehendes posting...

  2. Hi,

    Die beiden Beispiele geben leider nur den Variablennamen aus.

    nein, sie geben eine Zeichenkette aus, die exakt gar nichts mit irgendeiner eventuell ähnlich heißenden Variable zu tun hat. Du möchtest Dich mit Arrays beschäftigen.

    <script language="JavaScript">

    ERROR: Required attribute "type" missing.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. hi,

    var A001 = "na also";
    var zahl = "001";
    var konstante = "A";
    var eintrag= konstante+zahl;

    alert(window[eintrag]);

    gruss,
    wahsaga

  4. <script language="JavaScript">

    hier fehlt das type attribut.

    var A001 = "na also";
    var zahl = "001";
    var konstante = "A";
    var eintrag= konstante+zahl;

    wenn du das wirklich willst: window[eintrag]

    Aber in der Regel braucht man sowas nicht. Es ist fast immer eleganter (weil einfacher zu lesen oder schneller) über Arrays oder Objekte (die man behandelt wie assoziative Arrays) zu gehen. Es kommt halt drauf an, was du wirklich willst.

    Struppi.