Chris: Problem mit Array im Array im Array eines Arrays ...

Guten Tag,

ich möchte gerne eine Navigation erstellen, die auch noch Sublinks besitzt. Ich habe folgendes erstellt:
navlinks = new array();
navlinks[0] = new array();
navlinks[0][0] = "Gallery";
navlinks[0][1] = new array();
navlinks[0][1][0] = new array();
navlinks[0][1][0][0] = "GalleryLink 1";
navlinks[0][1][0][1] = "./gal1.html";
navlinks[0][1][1] = new array();
navlinks[0][1][1][0] = "GalleryLink 2";
navlinks[0][1][1][1] = "./gal2.html";
navlinks[0][1][2] = new array();
navlinks[0][1][2][0] = "GalleryLink 3";
navlinks[0][1][2][1] = "./gal3.html";

navlinks[0][0] soll beispielsweise den Namen des Links enthalten,
und navlinks[0][1] ein weiteres Array, welches die einzelnen Sublinks, wieder in einzelnen Array enthält mit Namen und Link. Allerdings passiert nichts, wenn ich beispielsweise navlinks[0][0] ausgeben will.
Wieso nicht?

Sollte ich das Prinzip eventuell ändern? Ich habe schon daran gedacht, eventuell Name und dann den Link, jeweile mit einem Zeichen getrennt, was ich dann wieder auseinander nehme.
Habt ihr vielleicht bessere Ideen?

Danke
   Chris

  1. Hallo,

    Wieso nicht?

    weil nicht deutlich wird, dass zusätzliche Arrays entstehen sollen.

    Entsprechend deiner Schreibweise müßte so etwas ergänzt werden:

      
    var navlinks;  
    navlinks = new Array();  
    navlinks[0]= new Array();  
    navlinks[0][1] = new Array();  
    navlinks[0][1][0] = new Array();  
    navlinks[0][1][1] = new Array();  
    navlinks[0][1][2] = new Array();  
    
    

    Hilfreich bei so etwas ist z.B. die "Error Console" des FireFox.

    Grüsse

    Cyx23

  2. Hallo,

    navlinks[0][0] soll beispielsweise den Namen des Links enthalten,
    und navlinks[0][1] ein weiteres Array, welches die einzelnen Sublinks, wieder in einzelnen Array enthält mit Namen und Link. Allerdings passiert nichts, wenn ich beispielsweise navlinks[0][0] ausgeben will.
    Wieso nicht?

    schon mal den Browser nach js-Fehlern gefragt? --> Fehlerkonsole ?
    dir fehlt wahrscheinlich die Funktion array().

    Habt ihr vielleicht bessere Ideen?

    du könntest dich mal an Objekte trauen. http://de.selfhtml.org/javascript/sprache/objekte.htm#eigene@title=javascript/sprache/objekte.htm#eigene

    hier mal eine einfache Struktur für Links und Menues

      
    function L_struct(url,text,tooltip) {  
     this.url=url;  
     this.text= text==""? url: text;  
     this.tooltip=tooltip;  
     }  
      
    // ein Menue hat eine Überschrift und Unterpunkte, Unterpunkte können Links oder Menues sein  
      
    function M_struct(mtext,li_arr) {  
     this.menu_text=mtext;  
     this.li_arr=li_arr; // ein Array  
     }  
    function L(u,x,t) { // L erzeugt ein Linkobjekt  
     return new L_struct(u,x,t);  
     }  
      
    function M(t,a) { // M erzeugt ein Menueobjekt  
     return new M_struct(t,a);  
     }  
      
    var um1=M("ein Untermenue", new Array(  
      L("x1.htm","x1","neues von x1"),  
      L("x2.htm","","neues von x2"),  
      L("x3.htm","","neues von x3") ));  
      
    var hauptmenue=M("hauptmenue",[  
      L("aboutme.htm","übermich","zur Person"),  
      um1,  
      L("impress.htm","Impressum","") ]);  
      
      
    function wr_menu(menu) {  
     document.write(menu.menu_text.bold()+"<ul>");  
     for (var l=0;l<menu.li_arr.length;l++) {  
      var li=menu.li_arr[l];  
      document.write("<li>");  
      if (li.li_arr) {  
       wr_menu(li);  
       }  
      else {  
       document.write(li.text.link(li.url)+" "+li.tooltip);  
       }  
      }  
     document.write("</ul>");  
     }  
      
    document.open();  
    wr_menu(hauptmenue);  
    document.close();  
      
    
    

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·