Hallo,
Ich würde da vom objekt-orientierten Standpunkt her herangehen:
Was ist ein Menu?
Ein Menu-Element bestehe aus
- einem Titel
- (optional) einer Liste von Untermenus
function MyMenu(title) {
this.title = title;
this.items = new Array();
}
MyMenu.proptotype.addItem = function (item) {
this.items.push(item);
}
// Build a little Menu
var menu = new MyMenu("Testmenu");
var untermenu = new MyMenu ("Untermenu");
menu.addItem(untermenu);
untermenu.addItem(new MyMenu("Unteroption1"));
untermenu.addItem(new MyMenu("Unteroption2"));
// Traversing Menu
for (var i = 0; i< menu.items.length; i++) {
var untermenu = menu.items[i];
if (untermenu.items.length > 0) {
// weitere untermenus
}
else {
// keine untermenus
}
}
Bei komplexeren Menustrukturen wird das Aufbauen wie unter "Build a little Menu" beschrieben ggf. etwas umständlich.
Du solltest daher vielleicht den "MyMenu"-Konstruktor so bauen, dass Du ihm einfach JSON-Daten übergeben kannst:
function MyMenu(jsonObj) {
if (typeof(jsonObj.title) == "undefined") {
// every menu needs at least a title
throw "This seams to be not a valid menu";
}
this.title = jsobObj.title;
this.items = new Array();
if ((typeof(jsonObj.items) != "undefined") && (jsonObj.items.length)) {
for (var i = 0; i < jsobObj.items.length; i++) {
this.items.push(new MyMenu(jsonObj.items[i]));
}
}
}
// And here we go:
var menu = new MyMenu ({'title' : 'Testmenu', items : [{'title' : 'untermenu', items : [...]}]});
Hoffe es sind nicht so viele Tippfehler drin, und es hilft Dir weiter.
Viele Grüße,
Jörg