Dynamisk meny
Vi trenger å la menyen ekspandere når vi klikker og vi vil fjerne elementer som ligger i andre grener av menyen. Samtidig ønsker vi å la menyen ekspandere til riktig status dersom vi, f.eks. ved en link velger et element.
Det er selvsagt mange måter å ordne dette på men jeg har valgt følgende løsning:
- Hver menyelement må ha en id-attributt. Denne er entydig og kan være en vilken som helst tekst. Det er denne id-attributten som identifiserer det valgte elementet med tanke på å utføre handlinger på grunnlag av brukerens valg, f.eks. AJAX-access til data.
- I tilleg tildeler jeg ved opplasting av siden hvert menyitem en entydig verdi som matcher posisjonen i menyen rekkefølgen i hvert nivå beskrives ved et siffer. F.eks angir 23 et item som er nummer to på første nivå og nummer 3 iandre nivå. ( merk at jeg defor har begrenset antall paralelle valg i hvetr nivå til 10. Det er enklet å endre dette i koden). Denne attributten gjør kodingen mye enklere. For å lagre denne informasjonen om hvert menyitem benytter jeg en egen attributt som jeg har kalt: data-marker. HTML, i motse4tning til XHTML og HTML4, validere med slike egne attributter. Det er anbefalt å gi dem et navn som begynner på data-
Det er selvsagt en fare med slike egne attributter siden navnet for kan komme i konflikt med navn i biblioteker du importerer.
Et lite eksempel med varierende dybde i menytreet. Her gjør vi ikke noe annet ved brukerens valg enn å vise fram id-verdien til det valgte elementet.
Bare for å teste direkte identifikasjon:
Du kan
også åpne den i et eget vindu for å se nærmere på koden:
test.html
https://borres.hiof.no/wep/js/ex/dynmenu/test.html
Selve menyen er i utgangspunktet skrevet slik:
Koden som befolker siden og handterer museaksjoner er slik:
Når siden er lastet gjøres et kall på setUp();
Stilsettet er veldig enkelt og kan med fordel endres: