Avatar billede pnr Nybegynder
14. november 2005 - 08:48 Der er 13 kommentarer og
1 løsning

Lave element "active" fra javascript

Jeg har lavet et galleri hvor der er x antal billeder. Man kan vælge at bladre gennem billederne på følgende måder:

Trykke på billede nummeret
Eller trykke forrige eller næste

eks.

(eks. forrige 1 2 3 4 5 6 7 næste)

Hvis man trykker på et af nummerene bliver det valgte nummer vist med en anden farve, det styrre jeg ved hjælp af CSS active. Men hvis man trykker på forrige eller næste, kan man ikke se på de listede nummere, hvilke billede der er valgt.

Kan jeg på en eller anden måde via java-script sætte active på et element? Eller hvordan kan jeg løse problemet?
Avatar billede softspot Forsker
14. november 2005 - 10:59 #1
Genererer du noget af dette på serveren med f.eks. ASP eller PHP? I så fald kan du vel der bestemme hvilken CSS class, der skal på det enkelte billede...

Hvis det hele foregår på klienten, så har du forskellige muligheder for at styre hvilke styles de forskellige elementer har, men det ville være lettere at hjælpe dig videre, hvis man kunne se hvad du har lavet indtil nu. Det er svært at vide hvordan du har implementeret siden "so far"...
Avatar billede pnr Nybegynder
14. november 2005 - 11:04 #2
Hej softspot

Det hele forgår på klienten, alle billedenavne og tekster ligger i et array. Jeg har desværre ikke mulighed for at ligge det på en webserver der kan tilgåes.

Her er mit java script:

        var valgtBillede = 1;       
        var billeder = new Array();
        <asp:Literal id="javaScriptArray" Runat="Server"/>
       
        function skift(nr)
        {
            var tmp
            if(nr == '+')
            {
                tmp = (parseInt(valgtBillede));
                nr = tmp + 1;
            }
            if(nr == '-')
            {
                tmp = (parseInt(valgtBillede));
                nr = tmp - 1;
            }
            document.Form1.<%=hovedebillede.ClientID%>.src = '<%=sti%>/<%=valgtGalleri.Text%>/stor/' + billeder[nr][0];
            document.getElementById('<%=hovedetekst.ClientID%>').innerHTML = billeder[nr][1];
            valgtBillede = nr;

        }
Avatar billede softspot Forsker
14. november 2005 - 11:22 #3
Har du også en måde at identificere dine billedevælgere (tallene hvor du direkte kan vælge hvilket billedenr du vil se), f.eks. med et id á la

<a href="#" onclick="return skift('-')">forrige</a>
<a id="picno_1" href="#" onclick="return skift(1)">1</a>
<a id="picno_2" href="#" onclick="return skift(2)">2</a>
<a id="picno_3" href="#" onclick="return skift(3)">3</a>
<a href="#" onclick="return skift('+')">næste</a>

så kunne din skift-funktion jo hente style for den aktuelt valgte billedevælger og sææte style til normal, derefter skifte til det nye billede og sætte style på den nye billedevælger. På den måde har du centralt klaret problemet...
Avatar billede pnr Nybegynder
14. november 2005 - 12:16 #4
Men kan jeg sætte et element til den active style?

eks.

document.getElementById(billeder[nr][2]).style.link_style.active

eller noget ligende?
Avatar billede softspot Forsker
14. november 2005 - 12:38 #5
Det lyder som en class. Den kan du sætte ved at kalde flg.

document.getElementById(billeder[nr][2]).className = "active";

Det er dog ikke anbefalelsesværdigt, da det efter sigende performer væsentlig dårligere end at sætte de style-attributter du ønsker at ændre direkte. Hvis det f.eks. kun er baggrundsfarven og tekstfarven du vil ændre, så bør du altså bruge flg.

document.getElementById(billeder[nr][2]).style.backgroundColor = '#ff0000';
document.getElementById(billeder[nr][2]).style.color = '#00ff00';

eller hvilken farve du nu ønsker at sætte. Med det er vel heller ikke så galt hvis det kun skal vedligeholdes et sted (i skift-funktionen)...?
Avatar billede roenving Novice
14. november 2005 - 19:22 #6
-- og så opfører browserne sig bestemt ikke ens med hensyn til :active ...

-- for IE holder et link aktivt indtil et andet element på samme side får fokus på den ene eller anden måde, mens de fleste andre browsere kun holder et link aktivt mens museknappen holdes nedtrykket !-)
Avatar billede pnr Nybegynder
16. november 2005 - 11:41 #7
roenving: Er det softspots kommentar du har kommenteret?

Hvad bør jeg så gøre?
Avatar billede roenving Novice
16. november 2005 - 12:13 #8
>>pnr

-- virker din oprindelige metode på andre browsere end IE ?-)
Avatar billede pnr Nybegynder
16. november 2005 - 12:45 #9
Når du skriver min "oprindelige medtode" hvilken metode hentyder du så til?
Avatar billede roenving Novice
16. november 2005 - 13:01 #10
Spørgsmålsteksten ...
Avatar billede pnr Nybegynder
16. november 2005 - 13:12 #11
Det virker fint i de browser jeg har testet i (IE, Firefox og safari)
Avatar billede pnr Nybegynder
18. november 2005 - 11:59 #12
softspot smid et svar så er der point
Avatar billede softspot Forsker
18. november 2005 - 12:04 #13
OK, det får du her så... :)
Avatar billede softspot Forsker
21. november 2005 - 14:40 #14
Tak for point :)
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