Avatar billede sysman Nybegynder
06. juni 2006 - 23:07 Der er 7 kommentarer

ændre class i menu

Hej.

Jeg har nedenstående kode. Det er en menu som ligger i en include fil. Jeg kunne godt tænke mig at ændre class'en alt afhænging at sidens navn. f.eks.

hvis side1.asp er den side man befinder sig på så skal class'en på linket til side1 hedde menuramme2 ellers menuramme0. Håber det kan forståes hvad jeg mener. Er der nogen der kan hjælpe ?

<table cellspacing="1" cellpadding="2" border="0" bgcolor="#354463" WIDTH="575">
        <tr>
            <td bgcolor="#354463" class="small" width="130" align="right">
            NAVIGATION&nbsp; »&nbsp; </td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="index.asp">HJEM</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="side1.asp">OPLEVELSER</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="side2.asp">BILLEDER</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="side3.asp">KONTAKT</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">LOGIN</td>
       
        </tr>
        </table>

sysman
Avatar billede mclemens Nybegynder
06. juni 2006 - 23:51 #1
Har included det i en fil for syns skyld...
Noget i denne stil du efterlyser?


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
.menuramme2{border:2px solid #fff;}
</style>

<script type="text/javascript">

window.onload=function(){
tds=document.getElementsByTagName("td");
for(i=0;i<tds.length;i++){
  atrgs=tds[i].getElementsByTagName("a");
  for(i2=0;i2<atrgs.length;i2++){
  if(atrgs[i2].href==window.location.href){
    atrgs[i2].className="menuramme2";
  }
  }
}
}

</script>

</head><body>

<table cellspacing="1" cellpadding="2" border="0" bgcolor="#354463" WIDTH="575">
        <tr>
            <td bgcolor="#354463" class="small" width="130" align="right">
            NAVIGATION&nbsp; »&nbsp; </td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="index.html">HJEM</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="side1.html">OPLEVELSER</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="side2.html">BILLEDER</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">
            <a href="side3.html">KONTAKT</a></td>
            <td bgcolor="#5F7797" class="menuramme0" align="center" onmouseover="this.className='menuramme1'" onmouseout="this.className='menuramme0'">LOGIN</td>
     
        </tr>
</table>

</body></html>
Avatar billede sysman Nybegynder
07. juni 2006 - 00:20 #2
Ja da lige præcis. Det var lige hvad jeg mente, men så kom næste problem som jeg ikke lige var opmærksom på. Lad os sige at jeg trykker på linket til "Billeder", så har jeg en side under billeder som f.eks. hedder side2sub.html, men siden hører stadig under billeder. Kan man lave det så Billeder stadig er markeret i menuen når jeg er på en under side på punket i menuen.
Avatar billede olebole Juniormester
07. juni 2006 - 00:51 #3
<ole>

Det er en rigtig skidt idé at skifte CSS-klasser dynamisk. Skift i stedet værdi på de enkelte style-properties ... det performer dramatisk meget bedre  ;o)

/mvh
</bole>
Avatar billede mclemens Nybegynder
07. juni 2006 - 00:51 #4
1. Ligger alle undersider til billeder inde under et underdirektorat, der hedder billeder så ja - hvis der ikke er andre undersider, der matcher et link eller direktorat, hvor ordet billeder indgår.

Eller:

2. Hedder alle undersider til billeder: billeder og et eller andet .html / .asp så ja - igen hvis der ikke er andre filer der lapper ind over...


3. Ellers: skal du sætte en variabel i dokumentet om hvilken class den skal have fra start af ... - hvor du definerer hvilket link der skal have skiftet class'en

Anbefales (del 1/2)!!! -> ^ og når det er tilfældet så ville den mest optimale løsning være at skifte class name attributten serverside - det samme gælder egentlig stort set uanset, hvad der er tilfældet...


4... næste mulighed er at oprette en linkliste til hver enkelt hovedmenu med absolutte placeringer til de filer der bestemmer om den pågældende class til det enkelte link skal skifte

Anbefales (del 2/2)!!! -> ... det bliver selvfølgelig ret overdrevet når det burde være muligt at gøre det serverside ... med et array og så checke om den requestede filen er en del af arrayet - hvis den er så outputtes 2 ellers outputtes 0


- konklusion, jeps det kan laves - dog skal du vælge en af 4 ovenstående muligheder ... eller gå efter muligheden med serverside validering som jeg anbefaler ... jeg bruger selv serverside med en url-splitter og har så alle request til underliggende filer ligger under samme direktorat (virtuelt ... direktorater eksisterer ikke - det er output fra databasen istedet) og hvis det så matcher er min knap lyst op med ændring på class defineringen...

- Kan desværre ikke hjælpe med asp programmering...

... og undskyld lang forklaring ...
hvis du vælger serverside scripting ... kører selv php ...
Avatar billede mclemens Nybegynder
07. juni 2006 - 00:52 #5
Update, jeps - som Olebole siger er det bedre at
skifte individuelle styles ved hover istedet...
Avatar billede sysman Nybegynder
07. juni 2006 - 22:59 #6
Jeg har nu lagt menuen ind på hver side så den ikke ligger i en include fil. Der er ikke så mange sider, så det går nok. Men jeg syntes alligevel der skal være lidt point til Jer begge to, så kom med et svar så I kan få lidt point for den tid i har brugt, som jeg sætter pris på.

Sysman
Avatar billede mclemens Nybegynder
07. juni 2006 - 23:15 #7
ok :)
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