Avatar billede budolfsen Nybegynder
24. juni 2008 - 14:59 Der er 5 kommentarer og
1 løsning

Aktivt link

Hej Eksperter

Nu er jeg ved at få grå i mit i forvejen skaldede hoved.

Jeg har en menu, hvor links skal være aktive når man er på den pågældende side. Linket er til en database og menu er lavet manuelt.

Jeg har prøvet med diverse javascriptsherinde fra, og det virker også fint hvis jeg skriver: "<a href="#"....>, men når jeg linker til index.php?id=1 eller et ekternt link virker det ikke.

Er der nogle, som kan hjælpe mig med at fikse problemet.

Kent
Avatar billede pidgeot Nybegynder
24. juni 2008 - 15:03 #1
a:active er ikke links til den aktuelle side - det er links i det øjeblik man klikker på dem.

Hvis du vil farve links til den aktuelle side anderledes, skal du bruge en anden metode.
Avatar billede budolfsen Nybegynder
24. juni 2008 - 15:06 #2
Det ved jeg godt. Jeg bruger heller ikke a:active, men et javascript til at farve linksene grønne med, og som sagt virker det fint med et snydelink, men med et rigtigt link virker det ikke.

I kan se mit script her:
<script language="javascript">
var activeItem = "";

function activate(element){
  if(activeItem == ""){activeItem = element}
  activeItem.className = "NormalClassName";
  element.className = "ActiveClassName";
  activeItem = element;
}
</script>

Og menudelen her:
<ul>
      <li><a href="#" class="NormalClassName" onClick="activate(this);">Arbejdsmilj&oslash;</a></li>
      <li><a class="NormalClassName" href="index.php?id=2" onClick="activate(this);"> Coaching</a></li>
</ul>
Avatar billede pidgeot Nybegynder
24. juni 2008 - 15:15 #3
Godt så - det er bare utroligt hvor mange der begår den fejl, så det er nærmest blevet en refleks så snart nogen spørger om den slags *-)

Tag et kig på http://www.paulbellows.com/getsmart/set_active/ - det skulle vist kunne netop det du ønsker.
Avatar billede pidgeot Nybegynder
24. juni 2008 - 15:19 #4
I øvrigt er der vist noget med der er mindre god performance på at udskifte klasser dynamisk, så overvej om du ikke kan håndtere det med PHP i stedet - lav et check hvor du skriver linket ud og skriv det passende klasse-navn ud fra det.
Avatar billede budolfsen Nybegynder
24. juni 2008 - 15:59 #5
Det har jeg også tænkt på at bruge, men jeg kan ikke få det til at virke med php.

Måske kan du hjælpe mig.
Avatar billede budolfsen Nybegynder
24. juni 2008 - 16:56 #6
Hej

Lukker spørgsmål har selv løst problemet ved hjælp af  følgende php script

<?php 
// +----------------------------------+ 
// ¦ Show currently active menu link: ¦ 
// +----------------------------------+ 
function activeLink($buffer)
{
$protocol = 'http' . 
  ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')? 's' : '') . 
  '://';
$server = (isset($_SERVER['HTTP_HOST']))? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
$activeLink = $protocol.$server.$_SERVER['REQUEST_URI'];
$buffer = str_replace('/$server/', "/$server/", $buffer);
return (str_replace("href=\"$activeLink\"", 'class="ActiveClassName"', $buffer));
}
ob_start('activeLink'); 
?>
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