Avatar billede ladyhawke Novice
19. maj 2008 - 11:41 Der er 12 kommentarer og
2 løsninger

Hvordan får jeg et script på en side, til at markere et menupunkt

Jeg har en frambaseret side (det er fast defineret for projektet). Jeg har en menu i venstre side af siden, som skal have markeret hvilket menupunkt der er aktivt.

Spørgsmålet er så: hvordan får jeg lavet et script (på menuen eller på hver indholdsside), som markerer det aktuelle menupunkt, baseret på hvilken side der vises lige nu.

Årsagen er at man kan komme til siderne på forskellige måder, både via menuen og via links i indholdet, men jeg vil stadig gerne have at man kan se hvor i strukturen man er...

Kan I hjælpe med det?
Avatar billede w13 Novice
19. maj 2008 - 11:46 #1
Hvordan ser et link i menuen ud?
Jeg ville lave et JavaScript, som løb alle menupunkterne igennem og sammenlignede deres HREF'er/URL-adresser med hovedframens adresse. Og når den fandt, det aktuelle punkt, kunne der evt. sættes en class på, som markerede linket korrekt.
Avatar billede ladyhawke Novice
19. maj 2008 - 12:25 #2
<a style="font-family: Arial; font-size: 10 pt; text-transform: none" target="content" href="indhold/anvendelse.htm">Anvendelse</a>
og hovedmenupunkterne har et id, men det kan jeg sagtens lave for alle menupunkter.
Hvordan kunne det se ud i JavaScript med at gennemløbe?

Jeg ved ikke helt hvordan/hvilke data jeg får, når det er frame baseret...
Avatar billede w13 Novice
19. maj 2008 - 12:46 #3
F.eks. hvis du nu lægger et id="menu" på menubeholderen, som indeholder alle menulinksene, og har id="mainframe" på det frame, som indeholder indholdet:

var oFrameURL=top.getElementById("mainframe").contentWindow.location.href;
var o=document.getElementById("menu");

for(var i=0,im=o.getElementsByTagName("a");i<im.length;i++){
  if(oFrameURL.indexOf(im[i].getAttribute("href"))>-1){
    im[i].setAttribute("className","markeret");
    im[i].setAttribute("class","markeret");
  }
}

Her bruger jeg så klassen "markeret".
Avatar billede w13 Novice
19. maj 2008 - 12:53 #4
Eller:

var oFrameURL=top.getElementById("mainframe").contentWindow.location.href;
var im=document.getElementById("menu").getElementsByTagName("a");

for(var i=0;i<im.length;i++){
  if(oFrameURL.indexOf(im[i].getAttribute("href"))>-1){
    im[i].className=im[i].class="markeret";
  }
}

:)

Forklaring:

for(var i=0;i<im.length;i++){
- kører alle a-elementer i menuen igennem.

if(oFrameURL.indexOf(im[i].getAttribute("href"))>-1){
- tjekker om framens url indeholder href'en fra linket.

im[i].className=im[i].class="markeret";
- sætter class="markeret" på linket, hvis det er aktivt. className skal bruges for at det virker i Internet Explorer.
Avatar billede w13 Novice
19. maj 2008 - 12:58 #5
Og hvis det virker, kan vi forkorte til:

var oFrameURL=top.getElementById("mainframe").contentWindow.location.href;
for(var i=0,im=document.getElementById("menu").getElementsByTagName("a");i<im.length;i++)if(oFrameURL.indexOf(im[i].getAttribute("href"))>-1)im[i].className=im[i].class="markeret";

:P
Avatar billede olebole Juniormester
19. maj 2008 - 21:09 #6
<ole>

Jeg ville nu nok lave det på serveren  =)

/mvh
</bole>
Avatar billede w13 Novice
19. maj 2008 - 22:21 #7
Da det foregår i Frames er det jo ikke sikkert, det skal laves ved load, Ole.
Jeg forstod det, som at det skulle kunne laves løbende uden opdatering.
Avatar billede ladyhawke Novice
20. maj 2008 - 07:31 #8
nu er det en løsning som kommer til at ligge på en cd og det væsentlige er sådan set at hvis der findes et menupunkt som passer til det valgte link i teksten, så skal det være markeret...

jeg tjekker løsningen senere i dag, hvis jeg kan nå det...
Avatar billede ladyhawke Novice
21. maj 2008 - 18:47 #9
Hmmm... jeg har ikke rigtig held med det, jeg har prøvet 12:46 og 12:53 forslagene og omdøbt mainframe til "content" som er min indholdsframe.

jeg har et body element til min menu (som findes i leftmenu.html), der hedder "menu" og en dl der hedder "menu_new" som indeholder den menu der skal markeres.

Der sker bare ikke rigtig noget med menuen når jeg klikker på en indholdsfil, som har scriptet. Jeg har lavet en meget synlig css klasse, så jeg er sikker på at kunne se, hvis menupunktet bliver markeret.
Avatar billede w13 Novice
21. maj 2008 - 18:52 #10
Men har du lagt id="content" på framen, eller er det kun name="content"?
Avatar billede ladyhawke Novice
21. maj 2008 - 19:07 #11
har prøvet hvor begge dele er sat til content
Avatar billede w13 Novice
22. maj 2008 - 12:32 #12
Har jeg mulighed for at se det i aktion(/inaktion)?
Avatar billede ladyhawke Novice
24. maj 2008 - 19:58 #13
sorry, dit svar blev ikke mailet, så jeg har først lige set det...

nej, ikke umiddelbart, som sagt er det ikke online nogen steder... men jeg kunne måske pakke en zip til dig, hvis der er noget passende sted jeg kan lægge den?
Avatar billede ladyhawke Novice
26. januar 2009 - 14:02 #14
lukker denne, pga. manglende aktivitet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester