Avatar billede krogstrup Nybegynder
28. april 2002 - 09:37 Der er 7 kommentarer og
1 løsning

Ændre farve på link og nulstille farve på andre links

Efter at have siddet og bøvlet med dette i et par timer (uden at komme videre overhovedet) tænkte jeg at det var tid til at få hjælp fra nogle af de mange begavede javascript eksperter :-)

Jeg har følgende links:

<a href="whatever" ID="menupunkt0" class="menuLink">Menupunkt 0</a>
<a href="whatever" ID="menupunkt1" class="menuLink">Menupunkt 1</a>
<a href="whatever" ID="menupunkt2" class="menuLink">Menupunkt 2</a>
<a href="whatever" ID="menupunkt3" class="menuLink">Menupunkt 3</a>

Disse links ligger i en frame for sig selv, og bliver derfor ikke genindlæst, når der klikkes på dem!

Jeg har følgende styles:

.menuLink {color:red}
.menuLinkSelected {color:blue}

Jeg ønsker at følgende skal ske, når man klikker på et link:

1. Alle links "nulstilles", så de vises i rød farve
2. Det valgte links farve ændres til blå og forbliver blå indtil der klikkes på et nyt link

Jeg ved ikke om man ganske enkelt kan vælge et links "class" dynamisk eller om man blot kan ændre style.color properties for det valgte link ?!?

Jeg har fedtet lidt rundt med både getElementByID og getElementsByTagName - men jeg kan ikke få det til at spille !

HJÆLP :-)
Avatar billede =maddog= Nybegynder
28. april 2002 - 09:54 #1
prøv at kigge lidt på :active pseudo klassen. det aktive link bliver i forvejen sat til en anden farve end de andre links. 'hvorfor gå over åen efter ....'
Avatar billede krogstrup Nybegynder
28. april 2002 - 10:04 #2
maddog >>>

Idéen er god nok, men det holder desværre ikke. Når man ovre i min indholdsframe klikker på tekst eller billeder (eller scrollbaren for den sags skyld) forsvinder focus fra mit link og den blå farve forsvinder - det må den ikke !!!
Avatar billede ras2000 Nybegynder
30. april 2002 - 17:10 #3
<html>
<head>
<script type="text/javascript">
var elementet = "";
function doit(el){
    if (elementet != "") elementet.style.color = '#ff0000';
    elementet = el;
    el.style.color = '#0000ff';
}
</script>
</head>
<body>
<a target="right" href="whatever" onclick="doit(this)">Menupunkt 0</a>
<a target="right" href="whatever" onclick="doit(this)">Menupunkt 1</a>
<a target="right" href="whatever" onclick="doit(this)">Menupunkt 2</a>
<a target="right" href="whatever" onclick="doit(this)">Menupunkt 3</a>

</body>

</html>
Avatar billede ras2000 Nybegynder
30. april 2002 - 17:12 #4
Her starter de også med de rigtige farver.
<html>
<head>
<script type="text/javascript">
var elementet = "";
function doit(el){
    if (elementet != "") elementet.style.color = '#ff0000';
    elementet = el;
    el.style.color = '#0000ff';
}
</script>
</head>
<body>
<a target="right" href="whatever" onclick="doit(this)" style="color:#ff0000">Menupunkt 0</a><br>
<a target="right" href="whatever" onclick="doit(this)" style="color:#ff0000">Menupunkt 1</a><br>
<a target="right" href="whatever" onclick="doit(this)" style="color:#ff0000">Menupunkt 2</a><br>
<a target="right" href="whatever" onclick="doit(this)" style="color:#ff0000">Menupunkt 3</a><br>

</body>

</html>
Avatar billede krogstrup Nybegynder
30. april 2002 - 21:31 #5
ras2000 >>>

Hej Ras
Jeg har ikke prøvet din kode endnu, men jeg kan ikke umiddelbart se at javascriptet tjekker om nogle andre links bliver vist med den blå farve og derefter nulstiller dem. Der er jo kun eet link ad gangen der må være blåt.

Procedure når der klikkes på et link:

1. Alle links nulstilles til farven rød
2. Det valgte links ændres til blå

Gør dit script ovenstående ?
Avatar billede =maddog= Nybegynder
30. april 2002 - 21:43 #6
ja det gør. element er det forrige link der har været clicket på og det nulstilles først. så sættes det nyeste link til element og der ændres farve. ganske smart.
Avatar billede krogstrup Nybegynder
01. maj 2002 - 08:30 #7
jamen, det har du jo fuldstændig ret i - det er faktisk ganske smart.

Jeg vil fluks prøve det af :-)
Avatar billede krogstrup Nybegynder
01. maj 2002 - 08:50 #8
ras2000 >>>

Tusind tak for scriptet - det endte med at se således ud, da jeg i forvejen havde en HOVER effekt, der blev sat ud af kraft pga. scriptet:

<script type="text/javascript">
var elementet = "";
function doit(el){
    if (elementet != "") elementet.style.color = '#000000';
    elementet = el;
    el.style.color = '#AA3130';
}

function doOver(el){
    if (el != elementet) el.style.color = '#AA3130';
}

function doOut(el){
    if (el != elementet) el.style.color = '#000000';
}
</script>
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