Horst: cast

Hi Leute,
habe drei Arrays mit Bilder befüllt.

var array_1 = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");

var array_2 = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");

var array_3 = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");

Die index-Variable der Funktion bildwechsel gibt das gewünschte array an. Also bei index=1 für array_1, index=2 für array_2 etc.

function bildwechsel(index) {

for(i=1;i<4;i++) {
   bild = "array_"+index;
   document.getElementById("ziel_id").src=bild[i-1];
}

Meine Frage:
Ich strebe eine Lösung an wie ich es in der Funktion versucht habe. Nur ist die Variable bild ein string und wenn ich bild[i-1] schreibe, dann wird nicht das array_1 angesprochen, sondern eben der string "array_1".
Kann ich aus einem String einen regulären Ausdruck machen??

Habe zwar eine Notlösung, doch mich interessiert trotzdem ob es mit einer Art cast möglich ist.

Horst

  1. Hi,

    habe drei Arrays mit Bilder befüllt.

    Die index-Variable der Funktion bildwechsel gibt das gewünschte array an. Also bei index=1 für array_1, index=2 für array_2 etc.

    Nutze verschachtelte Arrays.

    Nur ist die Variable bild ein string und wenn ich bild[i-1] schreibe, dann wird nicht das array_1 angesprochen, sondern eben der string "array_1".

    Damit loest sich naemlich auch gleich dieses Problem - dann kannst du beide Array-Ebenen einfach ueber einen nummerischen Index ansprechen.

    MfG ChrisB

    1. Hallo ihr zwei,

      danke euch für die schnellen Antworten. Ist echt ne klasse Sache und mit den zweidimensionalen Arrays klappt das sicher hervorragend. Euch noch nen schönen Abend.

      Horst

  2. Hi,

    Meine Frage:
    Ich strebe eine Lösung an wie ich es in der Funktion versucht habe. Nur ist die Variable bild ein string und wenn ich bild[i-1] schreibe, dann wird nicht das array_1 angesprochen, sondern eben der string "array_1".

    Es ginge zwar auch anders, aber dies wäre ein schöner Anwendungsfall für ein zweidimensionales Array.

    So kannst du das Array anlegen:
     ~~~javascript    var bilder = new Array();
        bilder[0] = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");
        bilder[1] = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");
        bilder[2] = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");

    und so auf die einzelnen bilder zugreifen:
    alert(bilder[1][2]);

    
    > Kann ich aus einem String einen regulären Ausdruck machen??  
      
    [Reguläre Ausdrücke](http://de.selfhtml.org/javascript/objekte/regexp.htm#allgemeines) haben mit deinem Problem nichts zu tun.  
      
    
    > Habe zwar eine Notlösung, doch mich interessiert trotzdem ob es mit einer Art cast möglich ist.  
      
    Ja, mit [eval()](http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=eval), dies ist aber nicht besonders elegant.  
      
    mfG,  
    steckl
    
  3. @@Horst:

    Kann ich aus einem String einen regulären Ausdruck machen??

    ??

    Was du willst, sind variable Variablen. Und in den allerallermeisten Fällen heißt die Lösung: Array.

    In dem Fall also ein Array von Arrays:

    var arrays = new Array();  
    array[0] = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");  
    array[1] = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");  
    array[2] = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");
    

    oder küzer geschrieben:

    var arrays = [];  
    array[0] = ["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg"];  
    array[1] = ["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg"];  
    array[2] = ["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg"];
    

    Zugriff auf k-tes Element des i-ten Arrays mit arrays[i][k].

    Warum du allerdings dreimal ein identisches Array haben willst, ist mir ein Rätsel.

    Live long and prosper,
    Gunnar

    --
    „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
    1. Warum du allerdings dreimal ein identisches Array haben willst, ist mir ein Rätsel.

      Wenn mal einer verloren geht, hat man noch zwei in Reserve.

      Mathias