Marcus: Adressierung eines Arrays mit Variablenname

Hallo in die Runde!

Aus einem bekannten Array soll ein Select befüllt werden.
Ich will hierzu z.B. das Array "MySelect_Entries" ansprechen.
Pendant zu dem Array bildet immer ein Select mit entsprechendem Namen, hier: "MySelect".
Unten versuche ich nun, den "SelectName" zusammen mit der Erweiterung "_Entries" als Ausdruck an die Variable "SelectEntriesArray" zu übergeben, um ein vorhandenes Array mit dem richtigen Namen anzusprechen.
Das derzeitige Ergebnis: Der zusammengesetzte Ausdruck wird als String aufgefasst, SelectEntriesArray.length liefert nur die Anzahl der Buchstaben des zusammengesetzten Begriffes.
Was mache ich falsch?
Bin für jeden Tip sehr dankbar!

SelectName = document.forms[FormsCount].elements[ElementsCount].name
SelectEntriesArray = SelectName + "_Entries";
SelectItemsMax = SelectEntriesArray.length;

Viele Grüsse & Danke schonmal!

_marcus

  1. Hallo!

    SelectName = document.forms[FormsCount].elements[ElementsCount].name
    SelectEntriesArray = SelectName + "_Entries";

    Du baust hier ein String zusammen.

    SelectItemsMax = SelectEntriesArray.length;

    Diesen String testest Du dann auf seine Länge.

    Du mußt währed der Laufzeit den JavaScript-Code zusammen bauen. Das macht man mit eval(). http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#eval

    SelectName = document.forms[FormsCount].elements[ElementsCount].name
    SelectItemsMax = eval(SelectName + " .length");

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Du mußt währed der Laufzeit den JavaScript-Code zusammen bauen. Das macht man mit eval(). http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#eval

      SelectName = document.forms[FormsCount].elements[ElementsCount].name
      SelectItemsMax = eval(SelectName + " .length");

      eval ist evil!

      und eigentlich nur nötig, wenn man JS während der Ausführungszeit übersetzten möchte. Das will der OP aber nicht. Daneben ist eval langsam, absturzanfällig und erschwert das debuggen.

      Wird eine Variabel gesucht:

      var ich_bins = "struppi";

      var x = 'ich';

      alert(window[x + '_bins']);

      der OP möchte vermutlich den Namen eines select feldes zusammen bauen, dort geht's noch einfacher:

      document.forms[formName].elements[SelectName + '_entries'].length;

      Struppi.

      1. Hallo!

        Daneben ist eval langsam, absturzanfällig und erschwert das debuggen.

        Kann ich nicht bestätigen! Ich habe das im Einsatz. Ich baue Array-Namen, also die Variable zusammen.

        Wird eine Variabel gesucht:

        var ich_bins = "struppi";

        var x = 'ich';

        alert(window[x + '_bins']);

        der OP möchte vermutlich den Namen eines select feldes zusammen bauen, dort geht's noch einfacher:

        document.forms[formName].elements[SelectName + '_entries'].length;

        Ich habe das so verstanden. Es gibt mehrere Arrays, und es soll je nach Auswahl das Array auf die länge getestet werden.

        var erstes_array = new Array(1,2,3);
        var zweites_array = new Array(1,2,3,4,5,6,7,8);

        welches_array = "erstes_array"; // vom Formular

        alert(eval(welches_array+."length"));

        Deine Methode kommt natürlich ohne eval aus. Mir war damals window[], also so über die Variable zuzugreifen, nicht bekannt bzw. hatte das als Lösung nicht gefunden.

        MfG, André Laugks

        --
        L-Andre @ gmx.de
        1. Hallo!

          Daneben ist eval langsam, absturzanfällig und erschwert das debuggen.

          Kann ich nicht bestätigen! Ich habe das im Einsatz. Ich baue Array-Namen, also die Variable zusammen.

          Probier's mal aus. Vom tempo macht das ungefähr das 4 bis 5 fache aus.

          Und ein Fehler in einem eval wird dir nicht richitg angezeigt, in keinem Browser.

          Ich habe das so verstanden. Es gibt mehrere Arrays, und es soll je nach Auswahl das Array auf die länge getestet werden.

          var erstes_array = new Array(1,2,3);
          var zweites_array = new Array(1,2,3,4,5,6,7,8);

          welches_array = "erstes_array"; // vom Formular

          alert(eval(welches_array+."length"));

          Wenn er das wirklich so gemeint hat, dann empfehle ich ihm 2-dimensonale Arrays, wie schon Deutor [pref:t=38319&m=209786]

          Struppi.