JavaScript
Børre Stenseth
Eksempler >Dynamisk meny

Dynamisk meny

Hva

I dette eksempelet skal vi lage en dynamisk meny. Vi skal bruke egne attributter på HTML-elementer.

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.

Asia
India
Kina
Beijing
Europa
Norge
Østtfold
Moss
Halden
Finnmark
Alta
Kautokeino
Italia
Amerika
Nordamerika
Søramerika
Peru
Brasil

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:

_test.html

Koden som befolker siden og handterer museaksjoner er slik:

_test.js

Når siden er lastet gjøres et kall på setUp();

Stilsettet er veldig enkelt og kan med fordel endres:

_test.css
Eksempler >Dynamisk meny