String zu Variablenname

  • Hallo,

    ich habe folgendes Problem:

    var D1 = "Problem";

    var Test = "D"+1;

    alert(Test);

    bzw.:

    var D1 = "Problem";

    alert("D"+1);


    Ich möchte gerne den Inhalt der Variable D1 ausgeben, jedoch wird immer nur "D1" ausgegeben.

    Ich würde mich über jede Hilfe freuen :D
    mfg.
    Nils

  • Das kann man mit eval() machen, ist aber nicht zu empfehlen. Ebenso wenig wie andere Tricks mit dem window-Objekt. Warum willst Du denn das machen? Sicher gibt es eine bessere Lösung.

  • Ich habe in dem HTML Teil viele Elemente und möchte die Werte von diesen Ausgeben.

    Da die Namen D1U1,D1U2,D1U3 ... usw. sind hatte ich vor diese in einer for Schleife auszugeben:
    for(var i=1;i<4;i++){

    for(var j=1;j<8;j++){

    alert("D"+i+"U"+j);

    }

    }

    Es sind insgesamt 63 Werte nach diesem Schema

    D (geht von 1-3)

    U (geht von 1-7)
    DXUX


    (und sowas nur mit anderen Buchstaben noch 2x [DXAX])





    *Aber ich brauchte das generell, da ich jetzt auch damit alle Felder zurücksetzen kann ohne tausende Zeilen tippen zu müssen



    **Und danke für die schnelle und hilfreiche Antwort schon mal ^^

  • Verstehe. Dann empfehle ich, die Werte in einem ass. Array abzulegen:

    https://wiki.selfhtml.org/wiki…/Array#Assoziative_Arrays

    Dann so vorbesetzen:

    Code
    1. var arr = {};
    2. arr.D1U5 = 7;
    3. // oder
    4. arr['D1U5'] = 7;

    Dann kannst Du in der Schleife so darauf zugreifen:

    Code
    1. for(var i=1;i<4;i++){
    2. for(var j=1;j<8;j++){
    3. alert(arr["D"+i+"U"+j]);
    4. }
    5. }

    Und dein Problem ist gelöst.

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Sempervivum ()

  • Hast Du mal den HTML-Quelltext als Beispiel?


    Nur als Randbemerkung, damit keine Verwirrung entsteht: Arrays werden in JS mit [] initiiiert, {} wird als Objekt-Initiierung verwendet.

  • Genau genommen ist es kein Array, sondern ein Objekt, wird aber in diesem Fall als ass. Array eingesetzt. Deshalb der Name arr aber die Initialisierung mit {}. Würde man ein "echtes" Array mit [] verwenden, wären die Zugriffe, wie ich sie beschrieben habe, so nicht möglich.

  • Ich weiß. Wollte das nur für andere einmal anmerken, weil Du in #4 nur von assoziativen Arrays sprachst und dann die Objekt-Notation verwendest.

    Sollte nur ein Hinweis für andere sein ;)