Toon posts:

javascript : hoe te loopen door meerdere arrays ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
var aantalmenus = 2

Menu1=new Array("HOME","home.asp",1);
    Menu1_1=new Array("Home","home.asp",0);
Menu2=new Array("COMPANY","profile.asp",4);
    Menu2_1=new Array("Profile","profile.asp",0);
    Menu2_2=new Array("Vision","vision.asp",0);
    Menu2_3=new Array("Mission","mission.asp",2);
        Menu2_3_1=new Array("Bla","bla.asp",0);
        Menu2_3_2=new Array("Dinges","dinges.asp",0);
    Menu2_4=new Array("References","references.asp",0);

Bovenstaande javascript code probeer ik te gebruiken in een script wat een dynamisch menu moet gaan genereren. Dit heb ik half afgekeken van een ander script. Zoals je ziet weet ik het aantal hoofdmenu items (var aantalmenus), en weet ik van elk menu element het aantal elementen wat daaronder valt (het laatste cijfer in de array).

Nou wil ik door deze arrays "loopen". Hoe kan ik (bijvoorbeeld) door de hoofdmenu items heen loopen?

Is iets als onderstaande code mogelijk? Waarbij (i) de naam van de array moet vervangen in de loop? Zoniet, wat is dan de oplossing??

code:
1
2
3
for (i=1; i<aantalmenus; i++){
    vardhtml += menu(i)[1];
}


NB: ik wil liever niet werken met arrays in arrays...

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Je kunt beter een soort van boom bouwen van menu-items, zdd dat HOME aan Home gekoppeld is, COMPANY aan Profile, Vision, Mission, References en Mission aan Bla en Dinges. Vervolgens kun je die boom aflopen met een recursieve functie...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Ik heb zelf ooit ook zo'n menu geschreven in ASP en Javascript. Ik heb alle items in 1 tabel gestopt en dmv een nummer kan je het niveau bepalen. In jouw voorbeeld kan je niet bepalen hoeveel items er als subitem onder een menu hangen. Als je nu het volgende doet wordt het al veel makkelijker:
Pseodo code:
code:
1
2
3
4
5
6
Menu = new Array();
Menu[1] = 1, De rest van de gegevens van Home
Menu[2] = 11, De rest van de gegevens van Sub home
Menu[3] = 2, Gegevens
Menu[4] = 21, Gegevens
etc...


En dan kan je bijv het volgende doen om de items weer te geven:
JavaScript:
1
2
3
4
for (x=1; x <= Menu.length; X++)
{
MenuItem = Menu[x]
}


edit:

Ik zie dat jij ook ASP gebruikt (althans iig in je links). Waarom stop je je menu niet in een db en haal je je menu op met ASP? Het voordeel hiervan is imho dat je niets in je code hoeft te veranderen als je een menuitem wil toevoegen of verwijderen.

[ Voor 20% gewijzigd door WvdWest op 24-03-2003 17:53 ]

I'm not a complete idiot - several parts are missing.


Verwijderd

Ha, precies waar ik mee bezig ben. Zie hier voor de code in z'n huidige stadium. Basically bestaat de menudefinitie uit zoiets:
code:
1
2
3
4
5
6
7
8
9
miama = new Array()
miama[0] = mia[1]
miama[1] = new Array()
    miama[1][0] = mia[2]
    miama[1][1] = new Array()
        miama[1][1][0] = mia[3]
        miama[1][1][1] = mia[4]
        miama[1][1][2] = mia[5]
    miama[1][2] = mia[6]

Waarbij de mia's de filenames en menutitels bevatten. Uit deze array wordt dan het menu gecreeerd middels een recursieve functie (hij wandelt door het array, als ie een menuitem ziet print ie 'm, als ie een array ziet roept ie zichzelf aan om 'm te printen).

edit: mm, detectie van de positie in de menuboom ging via de bestandsnaam, maar dat werkt even niet. Vandaar dat het menu niet verandert.
edit2: fixed :)

[ Voor 24% gewijzigd door Verwijderd op 24-03-2003 20:43 ]


Verwijderd

Topicstarter
Bedankt mensen.. hiermee kom ik er wel...
Pagina: 1