Avatar billede steen_hansen Forsker
24. november 2003 - 07:34 Der er 22 kommentarer og
1 løsning

Hvordan får jeg fokus på én bestemt side?

Spørgsmålet er lidt kryptisk, jeg vil forsøge at forklare efter bedste evne:

Jeg er igang med en menu. Når man vælger et under-menupunkt, vil jeg have et lille GIF-billede op ud for det enkelte menupunkt, så man tydeligt kan se hvad der er valgt.

Problemet er lidt, at jeg ikke kan finde ud af at angive helt korrekt, hvilket dokument, der bliver kigget på. Lad os forestille os, at min struktur ser således ud:

/mappe1/dokument1.asp
/mappe1/dokument2.asp
/mappe1/dokument3.asp
/mappe1/undermappe1/dokument1.asp
/mappe1/undermappe1/dokument2.asp
/mappe1/undermappe1/dokument3.asp
/mappe1/undermappe2/dokument1.asp
/mappe1/undermappe2/dokument2.asp
/mappe1/undermappe2/dokument3.asp
/mappe1/undermappe2/dokument4.asp

Hvis jeg vælger

/mappe1/undermappe2/dokument2.asp

- skal det lille GIF-billede være ud for det i menuen, så man kan se, at det er her man er.

Til det har jeg forsøgt at definere de enkelte lokationer:

<%
Dim sURL, sURL01, sURL02, sURL03, sURL04, sURL05, sURL06

sURL = Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
sURL = Left(sURL, (InStrRev(sURL, "/")))
sURL01 = "www.minhjemmeside.dk/mappe1/"
sURL01 = "www.minhjemmeside.dk/mappe1/dokument1.asp"
sURL01 = "www.minhjemmeside.dk/mappe1/dokument2.asp"

osv. osv.
%>

Mit problem er, at jeg ikke kan finde ud af at finde frem til det enkelte dokument, så jeg kan få sat GIF'en ud for menupunktet:

<% If sURL = True Then %>
<img border="0" src="/images/bullit.gif">&nbsp;<a href="#">Menupunkt 1</a>

Nogen gode forslag? Det ovenstående er som sagt ikke korrekt. Jeg er gået i stå midt i det hele, så jeg håber du/I kan forstå hvad det er jeg mener og komme med noget konstruktivt :o)
Avatar billede sbm Nybegynder
24. november 2003 - 10:17 #1
Hvad med f.eks. at lave udskrivning af din menu om til en funktion der kan kaldes fra de øvrige sider. Den enkelte side sender så det fornødne parameter med til at definere hvor din bullit skal være.
Avatar billede steen_hansen Forsker
24. november 2003 - 10:37 #2
Hm, jeg er ikke sikker på hvad du mener ...?
Avatar billede sbm Nybegynder
24. november 2003 - 10:38 #3
Ok. Først et spørgsmål. Har du kodet din menu "hårdt" eller henter du den ud af eksempelvis en database?
Avatar billede sbm Nybegynder
24. november 2003 - 10:44 #4
Og så lidt generelt.

Jeg laver som regel en SKELET.ASP fil - eller noget i den dur - som jeg inkluderer i toppen af alle mine sider på et site. Dertil laver jeg altid en FOOTER.ASP som jeg inkluderer i bunden på alle siderne.

I disse to sætter jeg bl.a. den fornødne HTML op, så alle siderne som udgangspunkt er ens, hvis bare disse to filer er inkluderet, og så har man et bestemt område til at lægge det specifikke indhold for den enkelte side ind.

Dertil har SKELET.ASP også includes af de forskellige filer jeg ellers gør brug af på tværs af sitet. Dette kunne f.eks. være FUNKTIONER.ASP som indeholder forskellige funktioner jeg gerne vil kunne kalde.

I dit tilfælde kunne FUNKTIONER.ASP så f.eks. indeholde en funktion udskrivMenu som tager et enkelt parameter. Dette parameter angiver hvilket punkt i din menu, der skal have en bullit ud for.

Hvis du har dine menupunkter i en database, kan det parameter f.eks. være din primærnøgle i tabellen. Ellers kan du også bare lave en if-else struktur som kører menuen igennem, og hele tiden checker for om der skal placeres en bullit ud for det menupunkt der er ved at blive skrevet ud.

Gav det mere mening?
Avatar billede steen_hansen Forsker
24. november 2003 - 10:48 #5
Ja og nej.

Kan du komme med nogle eksempler (kode) på de parametre?

Jeg har en data.asp, hvor du har skelet.asp, så dér er vi nok ens tænkende :o)
Avatar billede sbm Nybegynder
24. november 2003 - 10:48 #6
Jeg kan godt se din ide, med at lade koden selv "regne ud" hvor den pågældende bullit skal være, men den tilgang har også et par ulemper.

For det første er den lidt tung kodemæssigt. Ikke MEGET tung, men det kan i hvert fald gøres, så det kræver mindre CPU at placere din bullit.

Og hvis du har en struktur, hvor den samme side i princippet kunne udgøre flere forskellige punkter i din menu, får du et problem. Den skal i så fald laves om, og opdeles i flere.
Avatar billede steen_hansen Forsker
24. november 2003 - 10:51 #7
Ja, det er korrekt, afhængigt om et udsagn er sandt eller falsk:

If ... Then
  xxxxxx
Else
  xxxxxx
End If

på samme side. Men kan du komme med noget helt konkret kodeeksempel? Og kan man samtidig lave en onMouseOver? Det er lidt ud over det oprindelige spørgsmål, jeg ved det :o)
Avatar billede sbm Nybegynder
24. november 2003 - 10:56 #8
Her laver en en simpel menu med tre punkter: side1 side2 og side3.
Jeg har lavet det, så det er lagt ind i en tabel, med en ny linie til hvert punkt.

Function udskrivMenu(bullitPlacering)
    response.write "<table>"
    response.write "<tr><td>"
    if bullitPlacering="side1" then
        response.write "<img src=bullit.gif />"
    end if
    response.write "<a href=side1.asp>Side 1</a>"
    response.write "</td></tr>"
    response.write "<tr><td>"
    if bullitPlacering="side2" then
        response.write "<img src=bullit.gif />"
    end if
    response.write "<a href=side2.asp>Side 2</a>"
    response.write "</td></tr>"
    response.write "<tr><td>"
    if bullitPlacering="side3" then
        response.write "<img src=bullit.gif />"
    end if
    response.write "<a href=side3.asp>Side 3</a>"
    response.write "</td></tr>"
    response.write "</table>
End Function


Det her er bare klasket sammen. Det kan med 100% sikkerhed gøres smartere, men jeg håber du kan se hvad jeg mener...?
Avatar billede sbm Nybegynder
24. november 2003 - 10:57 #9
Funktionen skal så kaldes med f.eks.

udskrivMenu("side2")
Avatar billede steen_hansen Forsker
24. november 2003 - 10:59 #10
Ja, det kan jeg ... NÆSTEN :o)

To variabler, som jeg ikke kan se defineret nogen steder:

If bullitPlacering="side1" Then

bullitPlacering og side1 ....?
Avatar billede sbm Nybegynder
24. november 2003 - 11:00 #11
bullitPlacering er et parameter som funktionen modtager. Se linien

Function udskrivMenu(bullitPlacering)
Avatar billede sbm Nybegynder
24. november 2003 - 11:01 #12
Fra din side1.asp kaldes funktionen med

udskrivMenu("side1")

fra side 2 kaldes den med

udskrivMenu("side2")

osv. osv. osv.....
Avatar billede sbm Nybegynder
24. november 2003 - 11:04 #13
I øvrigt så er du måske liiiiiige rundhåndet nok med pointene. Jeg er selv ret ligeglad, men det er der mange andre på eksperten der IKKE er.

Hvis man har problemer med noget, er det måske fristende at smide en masse point ud, for at få hurtig hjælp, men 150 er altså i overkanten for dette spørgsmål.

Hvis du kan bruge det jeg har skrevet, så giv mig eksempelvis 50. Smid så selv et svar og giv resten til dig selv.
Avatar billede sbm Nybegynder
24. november 2003 - 11:18 #14
Hvis du ønsker en onmouseover effekt, kan du sikket lægge et <span> rundt om både din bullit og dit link, som så eksempelvis skifter grafikken på din bullit - eller hvad det nu var du havde tænkt dig.
Avatar billede steen_hansen Forsker
24. november 2003 - 11:26 #15
Ok, jeg prøver at lege lidt med det og vender tilbage efter frokost. Men inden da - jeg kommer i tanke om, at jeg har noget CSS liggende:

A.menu
{
    WIDTH: 100%; DISPLAY: block;
    PADDING: 5px 0px 5px 5px;
    FONT:bold 11px Verdana, Arial, Helvetica;
    TEXT-DECORATION: none;
    COLOR: white;
}
A.menu:active, A.menu:link, A.menu:visited
{
    BACKGROUND-COLOR: #393939;
    COLOR: E7E7E7;
    TEXT-DECORATION: none;
}
A.menu:hover
{
    BACKGROUND-COLOR: #000000;
}

Det laver hele cellen om til et link. Kan man ikke rette det til, så det kun er teksten, der skal være et link, og benytte grafik istedet for farver? I princippet må det være det samme.

Nu er vi ude i noget helt femte. Hvis ikke det er din boldgade, arbejder jeg videre med dit eksempel :o)
Avatar billede sbm Nybegynder
24. november 2003 - 11:32 #16
Øhhh. Nu er jeg ikke så stiv i det med at manipulere billeder via CSS, men det kan du sikkert søge på. Enten her på Eksperten i CSS kategorien, eller på Google.

Måske noget i stil med

#menubullit {
    background-image: url("bullit1.gif");
}
.over {
    background-image: url("bullit2.gif");
}

Men jeg er lidt på dybt vand hvad det angår....
Avatar billede steen_hansen Forsker
24. november 2003 - 11:33 #17
Kan det ikke omskrives? (er ikke sikker på hvordan det skal se ud)

A.menu
{
    WIDTH: 100%;
    FONT:11px Verdana, Arial, Helvetica;
    TEXT-DECORATION: none;
    COLOR: #868686;
}
A.menu:active, A.menu:link, A.menu:visited
{
    FONT:11px Verdana, Arial, Helvetica;
    TEXT-DECORATION: none;
    COLOR: #868686;
    IMAGE: "images/bullit.gif";
}
A.menu:hover
{
    IMAGE: "images/bullit.gif";
}
Avatar billede sbm Nybegynder
24. november 2003 - 11:34 #18
Øhm. Samme bullit.gif til både alm. og hover? :-)

Jo, du kan sikkert aktivere det med hover, men jeg kan ikke huske hvordan det gøres, hvis ikke der er tale om et baggrundsbillede.
Avatar billede sbm Nybegynder
24. november 2003 - 11:35 #19
...men du skal i så fald have spredt dit <a> tag ud, så det også indbefatter din bullit.gif og ikke kun link-teksten.
Avatar billede steen_hansen Forsker
24. november 2003 - 11:36 #20
Sorry, sbm, jeg får trukket dig godt rundt, hva'? :oD

Ja, samme bullit til både aktivt link og hover

Jeg prøver lige med dine eksempler.
Avatar billede steen_hansen Forsker
24. november 2003 - 11:49 #21
sbm, det ER CSS, jeg skal over i, det er jeg overbevist om.

Du får pointene som tak for din store indsats. Lægger et link til svaret, når den er hjemme :o)
Avatar billede steen_hansen Forsker
24. november 2003 - 11:52 #22
Så ikke din bemærkning fra 24/11-2003 11:04:02, men du har rigeligt fortjent de point :o)

Tak for hjælpen, nye, bedste ven! :o)
Avatar billede steen_hansen Forsker
25. november 2003 - 00:02 #23
Så lykkedes det! :o) Se svaret på http://www.eksperten.dk/spm/431681
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
Kurser inden for grundlæggende programmering

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