In4matiker: Dynamische Variable

Moin

habe im Forum gesucht aber nichts gefunden was auf mein Problem passt.
Geht um folgendes: Es wird via serverseitigem ASP VBScript ein HTML Code generiert in dessen Verlauf auch Javascript Arrays so dynamisch erstellt werden.
Ein möglicher Javascript Array Struktur sieht dann so aus:

var arrCombobox58 = new Array(2);
arrCombobox58[0] = new Array(1);
arrCombobox58[0][0] = "-> aBz bestimmen <-";
arrCombobox58[0][1] = "F";
arrCombobox58[1] = new Array(1);
arrCombobox58[1][0] = "Offen";
arrCombobox58[1][1] = "1";

Von diesen Arrays gibt es gut 3 Dutzend Stück und jeder hat eine andere Nummer arrCombobox58,arrCombobox78,arrCombobox81, etc

Jetzt habe ich eine Javascript Funktion geschrieben die die Arrays in einer Schleife auslesen soll. Durch die dynamische Namensgenerierung des serverseitigen ASP / VBscripts ist das aber irgendwie kompliziert oder ich bin zu blöd um auf die Arrays zuzugreifen.

var Ak_Fragen_ID = '58';
teststring = arrCombobox + Ak_Fragen_ID[1][0];

Hoffe Ihr wisst was ich meine.

Eine mögliche Alternative wäre natürlich die Arbeit mit Arrays.

Merci für die Hilfe und schönes Wochenende!

In4matiker

  1. hallo In4matiker,

    var arrCombobox58 = new Array(2);
    var Ak_Fragen_ID = '58';
    teststring = arrCombobox + Ak_Fragen_ID[1][0];

    Hoffe Ihr wisst was ich meine.

    Nicht _ganz_ genau. Aber ich hoffe, mein Zusammenschnitt deiner Variablen zeigt dir, in welcher Richtung ich analysieren würde. Für "teststring" kommt _vermutlich_ heraus:
     teststring = new Array(2)58[1][0]
    Um jetzt genauer nachschauen zu können, was _real_ herauskommt, hast du zuwenig von deinem Code gepostet.

    Eine mögliche Alternative wäre natürlich die Arbeit mit Arrays.

    Ups? Hast du nicht die ganze Zeit bereits mit Arrays zu arbeiten versucht?

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph

      Jein - ich glaube Du hast mich da falsch verstanden.
      mache mal ein (hoffentlich) besseres Beispiel:

      Habe da irgendwie ein paar Arrays:

      arrCombobox58
      arrCombobox37
      arrCombobox79
      arrCombobox31

      Und jetzt habe ich weiter eine Funktion die mit dem Wert ID übergeben wird.
      In ID stehen dabei die Nummer drin die den Array identifizieren.
      Also in der gleichen Reihenfolge wie die Arrays oben aufgelistet sind, wäre das jetzt hier:

      GetArrayValues(58)
      GetArrayValues(37)
      GetArrayValues(79)
      GetArrayValues(31)

      So in der Funktion nun muss ich auf diese Arrays nun zugreifen je nachdem welche ID übergeben wurde.

      function GetArrayValues(ID)
      {
      var Ak_Fragen_ID = ID;
      teststring = arrCombobox+Ak_Fragen_ID;
      }

      Wobei die Zeile
      teststring = arrCombobox + Ak_Fragen_ID[1][0];
      ja nicht wirklich geht weil ich nicht weiss wie ich das aufbauen soll.

      Hoffe ist nun verständlicher.

      Merci und Gruss

      In4matiker

      1. Hi,

        So in der Funktion nun muss ich auf diese Arrays nun zugreifen je nachdem welche ID übergeben wurde.

        function GetArrayValues(ID)
        {
        var Ak_Fragen_ID = ID;
        teststring = arrCombobox+Ak_Fragen_ID;
        }
        Wobei die Zeile
        teststring = arrCombobox + Ak_Fragen_ID[1][0];
        ja nicht wirklich geht weil ich nicht weiss wie ich das aufbauen soll.

        Es wäre, wenn es denn ginge:
        tmparray   = "arrCombobox" + Ak_Fragen_ID;
        teststring = tmparray[1][0];

        Aber das funktioniert nicht in Javascript, wie Du wohl selber schon erfahren hast.

        Eine recht einfache Möglichkeit wäre es einfach alle Deine numerierten Arrays in ein übergeordnetes Array zusammenzufassen sodaß Du so was ähnliches wie hier angedeutet machen kannst:

        arrayOfArray = new Array();
        arrayOfArray[58] = arrCombobox58;
        arrayOfArray[37] = arrCombobox37;
        arrayOfArray[79] = arrCombobox79;
        arrayOfArray[31] = arrCombobox31;

        /*
        arrayOfArray = new Object();
        arrayOfArray['arrCombobox58'] = arrCombobox58;
        arrayOfArray['arrCombobox37'] = arrCombobox37;
        arrayOfArray['arrCombobox79'] = arrCombobox79;
        arrayOfArray['arrCombobox31'] = arrCombobox31;
        */

        function GetArrayValues(ID){
          teststring = arrayOfArrays[ID][1][0];
        }

        /*
        function GetArrayValues(ID){
          var arrayName    = "arrCombobox" + ID;
          teststring = arrayOfArrays[arrayName][1][0];
        }
        */

        Ist aber nix halbes und nix ganzes, es wäre mit an Sicherheit grenzender Wahrscheinlichkeit besser das ganze Projekt unter die Lupe zu nehmen, das stimmt bestimmt schon im Ansatz nicht.

        so short

        Christoph Zurnieden

        1. 你好 Christoph,

          So in der Funktion nun muss ich auf diese Arrays nun zugreifen je
          nachdem welche ID übergeben wurde.

          function GetArrayValues(ID)
          {
          var Ak_Fragen_ID = ID;
          teststring = arrCombobox+Ak_Fragen_ID;
          }
          Wobei die Zeile
          teststring = arrCombobox + Ak_Fragen_ID[1][0];
          ja nicht wirklich geht weil ich nicht weiss wie ich das aufbauen soll.

          Es wäre, wenn es denn ginge:
          tmparray   = "arrCombobox" + Ak_Fragen_ID;
          teststring = tmparray[1][0];

          Aber das funktioniert nicht in Javascript, wie Du wohl selber schon
          erfahren hast.

          *hüstel* Wenn du meinen Artikel gelesen hättest wüsstest du jetzt: es geht.

            
          var tmparray   = window["arrCombobox" + Ak_Fragen_ID];  
          var teststring = tmparray[1][0];  
          
          

          再见,
           克里斯蒂安

          --
          Wer sich zu überschwänglich freut, wir später Grund zum Weinen haben.
          http://wwwtech.de/
          1. Hi,

            fast 'ne Stunde, was hat Dich aufgehalten? ;-)

            Es wäre, wenn es denn ginge:
            tmparray   = "arrCombobox" + Ak_Fragen_ID;
            teststring = tmparray[1][0];

            var tmparray   = window["arrCombobox" + Ak_Fragen_ID];
            var teststring = tmparray[1][0];

              
            Nun, ohne jetzt das lange Beckmesser zücken zu wollen, aber  
            tmparray   = "arrCombobox" + Ak\_Fragen\_ID;  
            ist nicht das gleiche wie  
            tmparray   = window["arrCombobox" + Ak\_Fragen\_ID];  
              
            Zudem: die von Dir beschriebene Methode funktioniert die nur in Javascript 1.5 oder auch in 1.4, 1.3, 1.2, 1.1, ... und vor allem: in allen Implementationen? (Vorsicht: Fangfrage! ;-)  
              
              
            so short  
              
            Christoph Zurnieden
            
            1. 你好 Christoph,

              fast 'ne Stunde, was hat Dich aufgehalten? ;-)

              Hehe. War mit meiner Holden Eis essen. Ausserdem hab ich ja auch noch was
              anderes zu tun als Forum lesen ;)

              Es wäre, wenn es denn ginge:
              tmparray   = "arrCombobox" + Ak_Fragen_ID;
              teststring = tmparray[1][0];

              var tmparray   = window["arrCombobox" + Ak_Fragen_ID];
              var teststring = tmparray[1][0];

              
              >   
              > Nun, ohne jetzt das lange Beckmesser zücken zu wollen, aber  
              > tmparray   = "arrCombobox" + Ak\_Fragen\_ID;  
              > ist nicht das gleiche wie  
              > tmparray   = window["arrCombobox" + Ak\_Fragen\_ID];  
                
              Es ist das, was du, aus deiner Erklärung und dem Quelltext geschlossen,  
              meintest. „Es ist nicht das gleiche“ ist ja ein Nicht-Argument, du wolltest  
              ja ein bestimmtes Ziel mit einem bestimmten Mittel erreichen. Dies ist die  
              Syntax in dieser Sprache dazu.  
                
              
              > Zudem: die von Dir beschriebene Methode funktioniert die nur in  
              > Javascript 1.5 oder auch in 1.4, 1.3, 1.2, 1.1, ...  
                
              Es ist seit JavaScript 1.1 so definiert. Den „JavaScript 1.0“-Standard  
              habe ich jetzt nicht gefunden.  
                
              
              > und vor allem: in allen Implementationen? (Vorsicht: Fangfrage! ;-)  
                
              Ja. (Achtung, Fang-Antwort! ;-)  
                
              再见,  
               克里斯蒂安  
              
              -- 
              Mensch zu Mathematiker: "Ich finde Ihre Arbeit ziemlich monoton". Mathematiker: "Mag sein! Dafür ist sie aber stetig und unbeschränkt."  
                
              <http://wwwtech.de/>  
              
              
              1. Hi,

                Ausserdem hab ich ja auch noch was anderes zu tun als Forum lesen ;)

                Oh, hast Du das Studium aufgegeben? >;->
                (Ja, da hast Du Recht, Christian, es ist der reine Neid ;-)

                Es ist das, was du, aus deiner Erklärung und dem Quelltext geschlossen,
                meintest.

                Nun, hätte ich das, hätte ich doch wohl auch das von Dir vorgeschlagene Konstrukt gewählt, oder?

                „Es ist nicht das gleiche“ ist ja ein Nicht-Argument, du wolltest
                ja ein bestimmtes Ziel mit einem bestimmten Mittel erreichen.

                Das habe ich ja auch. Nur das ich auch Ziel und Mittel bestimmte.

                Es ist seit JavaScript 1.1 so definiert. Den „JavaScript 1.0“-Standard
                habe ich jetzt nicht gefunden.

                Ich auch nicht, deshalb die Pünktchen.

                und vor allem: in allen Implementationen? (Vorsicht: Fangfrage! ;-)

                Ja. (Achtung, Fang-Antwort! ;-)

                Ja, muß ich jetzt wirklich in meine Javascriptimplementation dieses Konstrukt einbauen? Sonst wär's kein Javascript?

                Aber Du hast natürlich Recht: ich habe diese Möglichkeit schlicht vergessen. Ich bin wahrscheinlich, nein, mit Sicherheit mal wieder Urlaubsreif. Dies hier ist zwar um Längen weniger peinlich als mein Irrtum bezüglich der Htdig Lizenz aber auch nicht gerade von schlechten Eltern.

                Ach ja, jetzt mal vierzehn Tage nach Mallorca Pinien pinseln! Oder drei Wochen in den Libanon Zedern zeichnen? Alternativ auf den Aleuten wochenlang Alliterationen anwenden?
                Oh je, immer diese Entscheidungen ...

                so short

                Christoph Zurnieden

                1. 你好 Christoph,

                  Ausserdem hab ich ja auch noch was anderes zu tun als Forum lesen ;)

                  Oh, hast Du das Studium aufgegeben? >;->
                  (Ja, da hast Du Recht, Christian, es ist der reine Neid ;-)

                  Hehe.

                  Es ist das, was du, aus deiner Erklärung und dem Quelltext geschlossen,
                  meintest.

                  Nun, hätte ich das, hätte ich doch wohl auch das von Dir vorgeschlagene
                  Konstrukt gewählt, oder?

                  Vermutlich nicht. Ist nämlich vielen Leuten unbekannt. Das habe ich dir
                  jetzt auch einfach mal unterstellt >;)

                  und vor allem: in allen Implementationen? (Vorsicht: Fangfrage! ;-)

                  Ja. (Achtung, Fang-Antwort! ;-)

                  Ja, muß ich jetzt wirklich in meine Javascriptimplementation dieses
                  Konstrukt einbauen? Sonst wär's kein Javascript?

                  So war die Antwort gemeint ;)

                  Aber da dies ein wichtiges Basis-Element von JS ist (man denke an
                  top.frames["hallodu"].variable) wäre eine Implementation, die das _nicht_
                  umsetzt ziemlich kaputt und hat es meines Erachtes wirklich nicht verdient,
                  JavaScript-Implementation genannt zu werden.

                  Ach ja, jetzt mal vierzehn Tage nach Mallorca Pinien pinseln! Oder drei
                  Wochen in den Libanon Zedern zeichnen? Alternativ auf den Aleuten
                  wochenlang Alliterationen anwenden?
                  Oh je, immer diese Entscheidungen ...

                  Ich fahre am Montag erstmal für eine Woche nach Varberg, Schweden ;)

                  再见,
                   克里斯蒂安

                  --
                  Q: God, root, what's the difference?
                  A: God is merciful.
                  http://wwwtech.de/
                  1. Hallo Christian.

                    Ich fahre am Montag erstmal für eine Woche nach Varberg, Schweden ;)

                    Einen schönen Gruß an Jeena. ;-)

                    Einen schönen Samstag noch.

                    Gruß, Ashura

                    --
                    Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
                    30 Days to becoming an Opera8 Lover -- Opera 8.02 mit Bittorent-Unterstützung
                    Meine Browser: Opera 8.01 | Firefox 1.0.5 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
                    [Deshalb frei! - Argumente pro freie Software]
                    1. 你好 Ashura,

                      Ich fahre am Montag erstmal für eine Woche nach Varberg, Schweden ;)

                      Einen schönen Gruß an Jeena. ;-)

                      Werd ich bestellen :) Am Montag gehts los.

                      再见,
                       克里斯蒂安

                      --
                      Es gibt keinen Ort, wo der Geist zu finden waere. Er ist wie die Fussspuren der Voegel am Himmel.
                      http://wwwtech.de/
                      1. Hallo Christian.

                        Ich fahre am Montag erstmal für eine Woche nach Varberg, Schweden ;)

                        Einen schönen Gruß an Jeena. ;-)

                        Werd ich bestellen :) Am Montag gehts los.

                        Dann wünsche ich euch viel Spaß.

                        Einen schönen Samstag noch.

                        Gruß, Ashura

                        --
                        Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
                        30 Days to becoming an Opera8 Lover -- Opera 8.02 mit Bittorent-Unterstützung
                        Meine Browser: Opera 8.01 | Firefox 1.0.5 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
                        [Deshalb frei! - Argumente pro freie Software]
                  2. Hi,

                    Vermutlich nicht. Ist nämlich vielen Leuten unbekannt. Das habe ich dir
                    jetzt auch einfach mal unterstellt >;)

                    Du möchtest doch nur, das ich mich hier zu einem Kalauer verleiten lasse, oder?
                    Nä, nix gipps! ;-)

                    Ich fahre am Montag erstmal für eine Woche nach Varberg, Schweden ;)

                    Wo ist dsa denn? Ach, gegenüber Dänemark an der der E-70, das Varberg? Na, dann brauchst Du ja wenigstens keine Malariaprophylaxe, soweit im Süden >:->

                    so short

                    Christoph Zurnieden

                    1. 你好 Christoph,

                      Ich fahre am Montag erstmal für eine Woche nach Varberg, Schweden ;)

                      Wo ist dsa denn? Ach, gegenüber Dänemark an der der E-70, das Varberg? Na,
                      dann brauchst Du ja wenigstens keine Malariaprophylaxe, soweit im Süden >:->

                      Hehe. Der Norden hat mir schon immer besser gefallen als der Süden ;)

                      再见,
                       克里斯蒂安

                      --
                      Keine Schneeflocke faellt je auf die falsche Stelle.
                      http://wwwtech.de/