Verschachtelte Arrays in 3. Ebene
Sascha
- javascript
Hallo,
habe folgendes Problem:
ich Versuche eine Navigation über Arrays zu lösen und müsste dafür bis in die 3. Ebene gehen aber das klappt nicht.
Bis in die 2. geht aber bei der 3. ist Schluß.
Wer kann mir helfen???
Vielen dank im Vorraus
so und hier ist das Script:
____________________________________________________________
<html><head><title>Array</title></head>
<script language="Javascript">
<!--
function inhaltgenerieren(){
alert('lol');
inhalts_Liste_PP = new Array();
inhalts_Liste_PP[1] = new Array();
inhalts_Liste_PP[1].inhalt = new Array();
inhalts_Liste_PP[1].name = "wir";
inhalts_Liste_PP[1].inhalt[1] = "1-1 erste";
inhalts_Liste_PP[1].inhalt[2] = "1-2 erste";
inhalts_Liste_PP[1].inhalt[3] = "1-3 erste";
inhalts_Liste_PP[2] = new Array();
inhalts_Liste_PP[2].inhalt = new Array();
inhalts_Liste_PP[2].name = "extras";
inhalts_Liste_PP[2].inhalt[1] = "2-1 zweite";
inhalts_Liste_PP[2].inhalt[2] = "2-2 zweite";
inhalts_Liste_PP[2].inhalt[3] = "2-3 zweite";
inhalts_Liste_PP[3] = new Array();
inhalts_Liste_PP[3].inhalt = new Array();
inhalts_Liste_PP[3].name = "referenzen";
inhalts_Liste_PP[3].inhalt[1] = "3-1 dritte";
inhalts_Liste_PP[3].inhalt[2] = "3-2 dritte";
inhalts_Liste_PP[3].inhalt[3] = "3-3 dritte";
inhalts_Liste_PP[3].inhalt[4] = "3-4 dritte";
inhalts_Liste_PP[3].inhalt[5] = "3-5 dritte";
alert("3-3: " + inhalts_Liste_PP[3].inhalt[3]);
// ab hier auskommentieren
inhalts_Liste_PP[3].inhalt[1].a = new Array();
inhalts_Liste_PP[3].inhalt[1].a[1] = "3-1-1 content";
inhalts_Liste_PP[3].inhalt[1].a[2] = "3-1-2 content";
inhalts_Liste_PP[3].inhalt[1].a[3] = "3-1-3 content";
inhalts_Liste_PP[3].inhalt[1].a[4] = "3-1-4 content";
inhalts_Liste_PP[3].inhalt[2].b = new Array();
inhalts_Liste_PP[3].inhalt[2].b[1] = "3-1-1 content";
inhalts_Liste_PP[3].inhalt[2].b[2] = "3-1-2 content";
inhalts_Liste_PP[3].inhalt[2].b[3] = "3-1-3 content";
inhalts_Liste_PP[3].inhalt[2].b[4] = "3-1-4 content";
// bis hier auskommentieren
//inhalts_Liste_PP[3].inhalt[1].con = new Array();
//inhalts_Liste_PP[3].inhalt.con = new Array();
//inhalts_Liste_PP[3].inhalt[1].con[1] = new Array();
//------------
alert(inhalts_Liste_PP[3].inhalt[1].length);
inhalts_Liste_PP[4] = new Array();
inhalts_Liste_PP[4].inhalt = new Array();
inhalts_Liste_PP[4].name = "kontakt";
inhalts_Liste_PP[4].inhalt[1] = "4-1 vierte";
inhalts_Liste_PP[4].inhalt[2] = "4-2 vierte";
inhalts_Liste_PP[4].inhalt[3] = "4-3 vierte";
alert(inhalts_Liste_PP[4].inhalt.length);
}
// -->
</script>
<body onload="inhaltgenerieren();">
Hallo Welt
</body>
</html>
Hallol,
hier beißt sich was:
inhalts_Liste_PP[1].inhalt[1] = "1-1 erste";
inhalts_Liste_PP[3].inhalt[1].a = new Array();
Mußt Du schon machen
inhalts_Liste_PP[1].inhalt[1] = new Array();
wenn anschließend
inhalts_Liste_PP[3].inhalt[1].a = new Array();
funzen soll.
Ich würde das ganze als objektorientierten Tree lösen.
Der Vorteil ist, daß Du beliebig viele Ebenen verwenden kannst.
Hier mal eine Anregung:
function Node(aParent, aName)
{ this.Parent=aParent;
this.Name=aName;
this.Child=new Array();
this.AddChild=AddChild;
this.SetChild=SetChild;
}
function AddChild(aName)
{ this.Child[this.Child.length]=new Node(this, aName);
}
function SetChild(aIndex,aName)
{ this.Child[aIndex]=new Node(this, aName);
}
var root=new Node(0,"root");
root.SetChild(0,"wir");
root.Child[0].SetChild(0,"1-1 erste");
root.Child[0].SetChild(1,"1-2 erste");
root.Child[0].SetChild(2,"1-3 erste");
root.SetChild(1,"extras");
root.Child[1].SetChild(0,"2-1 erste");
root.Child[1].SetChild(1,"2-2 erste");
root.Child[1].SetChild(2,"2-3 erste");
root.SetChild(2,"referenzen");
root.Child[2].SetChild(0,"3-1 erste");
root.Child[2].SetChild(1,"3-2 erste");
root.Child[2].SetChild(2,"3-3 erste");
root.Child[2].SetChild(1,"3-4 erste");
root.Child[2].SetChild(2,"3-5 erste");
root.Child[2].Child[0].SetChild(0,"3-1-1 content");
root.Child[2].Child[0].SetChild(1,"3-1-2 content");
root.Child[2].Child[0].SetChild(2,"3-1-3 content");
root.Child[2].Child[0].SetChild(3,"3-1-4 content");
alert(root.Child[2].Child[0].Child[3].Name);
MfG. Lutz T.
Danke ich probiers mal aus :-)
Sascha