Avatar billede wondergirl Nybegynder
31. januar 2002 - 09:20 Der er 16 kommentarer og
1 løsning

Include file - I stedet for frames

Hej

Jeg sidder og skal lave et større projekt, hvor jeg egentlig helst vil slippe for at lave frames. Men lige nu og her føler jeg, at jeg er nødt til at lave frames.

Det er sådan, at jeg har en forside med en menu der skal gå igen på omk. 300 undersider. Den menu har jeg så lavet menu_01.asp og include't filen de steder hvor menuen skal vises.

Men menuen er en falldown-menu, sådan en hvor man klikker på en overmenupunkt, så kommer der undermenupunkterfrem. Og i mit tilfælde, så sker der selvfølgelig det, at menuen loades på ny, og er klappet sammen igen. Men jeg vil jo gerne bibeholde den i udfoldet tilstand fra forrige klik, så brugeren kan se på menuen, hvor han/hun er.

Har hørt det er noget med at gemme informationer i en cookie. Men hvordan?

Andre forslag?

Måske det ville være nemmeste at lave frames :-) Men det er ikke altid man skal gøre det på den nemmeste måde.
Avatar billede torbenmelander Nybegynder
31. januar 2002 - 09:31 #1
Du kunne kalde siden med querystring www.side.dk/filnavn.asp?menupunkt=1
og i menu_01.asp checke om denne er valgt

'Kode til overmenupunkt ...
If Request.Querystring("menupunkt") = CLng(1) Then
'Kode til undermenupunkter her ...
End If
Avatar billede torbenmelander Nybegynder
31. januar 2002 - 09:32 #2
Det kræver dog at alle links får ?menupunkt=1 ... men det er i hvert fald bedre end at bruge cookies!
Avatar billede coltau Juniormester
31. januar 2002 - 09:37 #3
Der er kun en mulighed:

I din menu_01.asp skal du gemme et nummer for undermenuen i en Session-variable således at menu_01.asp kan huske det til næste gang den kaldes.

if IsEmpty(Session.QueryString("menupunkt")) then
  Session("menupunkt") = Aktuellemenupunkt
else
  Session("menupunkt") = Session.QueryString("menupunkt")
end if
Avatar billede wondergirl Nybegynder
31. januar 2002 - 09:41 #4
Min menufil ser sådan ud:

<html>
<head>
<SCRIPT LANGUAGE=javascript>

constMaxItem=3

function fnDispThis(active)
{
for (i=1; i < constMaxItem+1; i++)
    {
    if (i!=active)
        {
        document.all("sub"+i).style.display="NONE"
        }
    else
        {
        document.all("sub"+active).style.display="BLOCK"
        }
    }
}

</SCRIPT>

<title>IT-Divisionen 2</title>

<!-- Script til Stylesheet -->
<link rel="stylesheet" type="text/css" href="../../Trine/it-divisionen/styles.css">

</head>

<body>
<table BORDER="0" CELLSPACING="0" CELLPADDING="0" width="150" style="border-collapse: collapse" bordercolor="#111111">
    <tr>
        <td class="format" onclick="fnDispThis(1)" style="Cursor:HAND;"><b>
        Menupunkt 1</b><DIV id="sub1" style="Display:'NONE'; width:150; height:68">
        <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
          <tr>
            <td width="20%">&nbsp;</td>
            <td width="80%"><a href="index2.asp">Underpunkt 1</a></td>
          </tr>
          <tr>
            <td width="20%">&nbsp;</td>
            <td width="80%">Underpunkt 2 Lige så meget tekst der skal være</td>
          </tr>
        </table>
        </DIV>
        </td>
    </tr>
    <tr>
        <td class="format" onclick="fnDispThis(2)" style="Cursor:HAND;"><b>
        Menupunkt 2</b><br>
        <DIV id="sub2" style="Display:'NONE';">
        <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%">Underpunkt 1</td>
  </tr>
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%">Underpunkt 2 Lige så meget tekst der skal være</td>
  </tr>
</table>
    </DIV>
    </td>
    </tr>
    <tr>
        <td class="format" onclick="fnDispThis(3)" style="Cursor:HAND;"><b>
        Menupunkt 3</b><br>
        <DIV id="sub3" style="Display:'NONE';">
                <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%">Underpunkt 1</td>
  </tr>
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%">Underpunkt 2 Lige så meget tekst der skal være</td>
  </tr>
</table>
    </DIV>
    </td>
    </tr>
</table>
</body>
</html>

Ved ikke om der er en smartere en out there on cyberspace. Den her var lige den eneste jeg kunne finde.
Avatar billede wondergirl Nybegynder
31. januar 2002 - 09:43 #5
Jeg fatter ikke en skid af det i skriver. Jeg er total hjernelam til ASP.
Avatar billede torbenmelander Nybegynder
31. januar 2002 - 09:57 #6
Hvis menuen skal bygges omkring denne struktur:

Menupunkt1
-Undermenupunkt1 til Menupunkt1
-Undermenupunkt2 til Menupunkt1
Menupunkt2
-Undermenupunkt1 til Menupunkt2
-Undermenupunkt2 til Menupunkt2
Menupunkt3
-Undermenupunkt1 til Menupunkt3
-Undermenupunkt2 til Menupunkt3

ville jeg lave det hele i ASP:

<a href="filnavn.asp?menupunkt=1">Menupunkt1</a><br>
<% If Request.Querystring("menupunkt") = 1 Then %>
<a href="filnavn.asp?menupunkt=1">-Undermenupunkt1 til Menupunkt1</a><br>
<a href="filnavn.asp?menupunkt=1">-Undermenupunkt2 til Menupunkt1</a><br>
<% End If %>
<a href="filnavn.asp?menupunkt=2">Menupunkt2</a><br>
<% If Request.Querystring("menupunkt") = 2 Then %>
<a href="filnavn.asp?menupunkt=2">-Undermenupunkt1 til Menupunkt2</a><br>
<a href="filnavn.asp?menupunkt=2">-Undermenupunkt2 til Menupunkt2</a><br>
<% End If %>
<a href="filnavn.asp?menupunkt=3">Menupunkt3</a><br>
<% If Request.Querystring("menupunkt") = 3 Then %>
<a href="filnavn.asp?menupunkt=3">-Undermenupunkt1 til Menupunkt3</a><br>
<a href="filnavn.asp?menupunkt=3">-Undermenupunkt2 til Menupunkt3</a><br>
<% End If %>

og så droppe det javascript du har lavet (el. fundet) ... du kan selv sætte det ind i tabeller hvis du vil have det ...
Avatar billede coltau Juniormester
31. januar 2002 - 10:09 #7
Den virker fint (bare ikke i netscape - den folder alle punkter ud.) - nu skal du bare have den til at huske punktet og det kan ikke lade sig gøre da funktionaliteten er lavet i javascript som udføres på klienten.
Den eneste kommunikation mellem klient-javascript og Server-ASP er input-felter og det er nok ikke muligt at ændre menupunkterne til input-felter.

Men hva' med en Applet der kan det samme: Check www.dgprintservice.dk
Avatar billede wondergirl Nybegynder
31. januar 2002 - 10:18 #8
Torben> Skal det bare sættes ind i body?
Avatar billede wondergirl Nybegynder
31. januar 2002 - 10:25 #9
...Fordi jeg kan ikke få det til at virke på nogen måde. Som sagt så er jeg dum til det her. Giver gerne 200 points til dig, hvis du kan levere en løsning der funker.
Avatar billede torbenmelander Nybegynder
31. januar 2002 - 10:26 #10
Ja det skal sættes ind i body'en
Avatar billede coltau Juniormester
31. januar 2002 - 10:27 #11
Vær opmærksom på at torbens eksempel vil loade hvergang - også når du skal åbne til underpunkter.
Din egen er udmærket - men kræver frame.
Avatar billede wondergirl Nybegynder
31. januar 2002 - 10:31 #12
Coltau> Den side du linkede til bruger frames, så det er der vel ikke det fede ved.
Avatar billede torbenmelander Nybegynder
31. januar 2002 - 10:32 #13
Kan evt. lave komplet eksempel om lidt ... men er lige til test nu !!!
Avatar billede wondergirl Nybegynder
31. januar 2002 - 10:34 #14
Kort fortalt. Så skal den kunne huske fra forige side, hvad der blev klikket på, og lade den del af menuen være åben, så brugeren kan se på menuen hvor vedkommende er.
Avatar billede coltau Juniormester
31. januar 2002 - 10:36 #15
Hvis du skal have en menu der folder sig ud (og skal huske det igen) i javascript eller JavaApplet så skal den laves i frames.

Ellers skal den laves i eks. ASP - så kan den huske det igen - så vil skærmen opdatere hvergang du bare trykker på et menupunkt - det gælder også hovedpunkter.
Avatar billede etlekana Nybegynder
31. januar 2002 - 10:41 #16
Her er hvordan du kan gøre det. husk at menuen nu skal være en asp fil.
eks. menu.asp

<%sub = request.querystring("sub")%>
<html>
<head>
<SCRIPT LANGUAGE=javascript>

constMaxItem=3

function fnDispThis(active)
{
for (i=1; i < constMaxItem+1; i++)
    {
    if (i!=active)
        {
        document.all("sub"+i).style.display="NONE"
        }
    else
        {
        document.all("sub"+active).style.display="BLOCK"
        }
    }
}

</SCRIPT>

<title>IT-Divisionen 2</title>

<!-- Script til Stylesheet -->
<link rel="stylesheet" type="text/css" href="../../Trine/it-divisionen/styles.css">

</head>

<body>
<table BORDER="0" CELLSPACING="0" CELLPADDING="0" width="150" style="border-collapse: collapse" bordercolor="#111111">
    <tr>
        <td class="format" onclick="fnDispThis(1)" style="Cursor:HAND;"><b>
        Menupunkt 1</b><DIV id="sub1" style="Display:'<%if sub = 1 then%>BLOCK<%else%>NONE<%end if%>'; width:150; height:68">
        <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
          <tr>
            <td width="20%">&nbsp;</td>
            <td width="80%"><a href="index2.asp?sub=1">Underpunkt 1</a></td>
          </tr>
          <tr>
            <td width="20%">&nbsp;</td>
            <td width="80%">Underpunkt 2 Lige så meget tekst der skal være</td>
          </tr>
        </table>
        </DIV>
        </td>
    </tr>
    <tr>
        <td class="format" onclick="fnDispThis(2)" style="Cursor:HAND;"><b>
        Menupunkt 2</b><br>
        <DIV id="sub2" style="Display:'<%if sub = 2 then%>BLOCK<%else%>NONE<%end if%>';">
        <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%"><a href="index5.asp?sub=2">Underpunkt 1</a></td>
  </tr>
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%">Underpunkt 2 Lige så meget tekst der skal være</td>
  </tr>
</table>
    </DIV>
    </td>
    </tr>
    <tr>
        <td class="format" onclick="fnDispThis(3)" style="Cursor:HAND;"><b>
        Menupunkt 3</b><br>
        <DIV id="sub3" style="Display:'<%if sub = 3 then%>BLOCK<%else%>NONE<%end if%>';">
                <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%"><a href="index5.asp?sub=3">Underpunkt 1</a></td>
  </tr>
  <tr>
    <td width="19%">&nbsp;</td>
    <td width="81%">Underpunkt 2 Lige så meget tekst der skal være</td>
  </tr>
</table>
    </DIV>
    </td>
    </tr>
</table>
</body>
</html>
Avatar billede etlekana Nybegynder
31. januar 2002 - 10:59 #17
Og vi har lige udskiftet all sub med umenu da sub er en allerede eksisterende statement. Og derfor ikke så god at definerer :o)
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