Avatar billede stkol Nybegynder
28. august 2005 - 18:02 Der er 27 kommentarer og
1 løsning

Menu som bliver åben når man klikker!

Hej folkens

Jeg har følgende script som virker (næsten) som det skal:

<!-- Vertical Product Menu Start -->
   
<style type="text/css">
.menuOut {cursor:pointer; margin:1px; font-family:Verdana; font-size:11px; background-color:#0099cc; color:#000000; width:150px; border:1px solid #000000; padding:2px; text-align:left; font-family:Verdana; font-weight:bold;}
.menuOver {cursor:pointer; margin:1px; font-family:Verdana; font-size:11px; background-color:#000000; color:#0099cc; width:150px; border:1px solid #0099cc; padding:2px; text-align:left; font-family:Verdana; font-weight:bold;}
.submenu {width:150px; font-family:Verdana; font-size:11px; padding-left:5px;}
.submenu a {color:#000080; text-decoration:none; font-weight:none;}
.submenu a:hover {color:#ff0000; text-decoration:none; font-style:none; font-weight:none;}
</style>
<script type="text/javascript">

function SwitchMenu(obj){
    if(document.getElementById){
    var el = document.getElementById(obj);
    var ar = document.getElementById("cont").getElementsByTagName("DIV");
        if(el.style.display == "none"){
            for (var i=0; i<ar.length; i++){
                ar[i].style.display = "none";
            }
            el.style.display = "block";
        }else{
            el.style.display = "none";
        }
    }
}
function ChangeClass(menu, newClass) {
    if (document.getElementById) {
        document.getElementById(menu).className = newClass;
    }
}
document.onselectstart = new Function("return true");
</script>   
   
<!-- Vertical Product Menu End -->





<div id="cont">
    <%
   
    prodmenutaeller=0
   
    '####### Prodmenu ############
    '## Create db objects and SQL   
    set ProdmenuConn = Server.CreateObject("ADODB.Connection")
    ProdmenuConn.CursorLocation = 3
    ProdmenuConn.Open Application("ConnectString")
    Set Prodmenurs = Server.CreateObject("ADODB.Recordset")
   
    ProdmenuSql = "SELECT * FROM prodmenu;"
   
    Set Prodmenurs = ProdmenuConn.Execute(ProdmenuSql)
   
    While (not Prodmenurs.EOF)
   
    prodmenutaeller=prodmenutaeller+1
   
    %>
        <p id="menu<%=prodmenutaeller%>" class="menuOut" onclick="SwitchMenu('sub<%=prodmenutaeller%>')" onmouseover="ChangeClass('menu<%=prodmenutaeller%>','menuOver')" onmouseout="ChangeClass('menu<%=prodmenutaeller%>','menuOut')"><%=Prodmenurs("menutext")%></p>
        <div class="submenu" id="sub<%=prodmenutaeller%>" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">
    <%
   
        '####### subProdmenu ############
        '## Create db objects and SQL   
        set subProdmenuConn = Server.CreateObject("ADODB.Connection")
        subProdmenuConn.CursorLocation = 3
        subProdmenuConn.Open Application("ConnectString")
        Set subProdmenurs = Server.CreateObject("ADODB.Recordset")
   
        subProdmenuSql = "SELECT DISTINCT VAREART, VAREGRUPPE FROM VarerSQL WHERE VAREGRUPPE = " & Prodmenurs("menuid")
   
        Set subProdmenurs = subProdmenuConn.Execute(subProdmenuSql)
   
        While (not subProdmenurs.EOF)
   
    %>
            • <a href="main.asp?contentpage=productpage&menutext=<%=Prodmenurs("menutext")%>&varegruppe=<%= trim(subProdmenurs("VAREGRUPPE")) %>&vareart=<%= trim(subProdmenurs("VAREART")) %>" title="<%= trim(subProdmenurs("VAREART")) %>"><%= trim(subProdmenurs("VAREART")) %></a><br/>
<%
            subProdmenurs.movenext
        wend
%>       
        </div>
<%
    Prodmenurs.movenext
    wend
%>
    </div>




Mit problem ligger i at når man klikker på menuen er det det samme dokument der reloades loades som menuen er i, og derved folder menuen sammen igen så man ikke kan se hvor man er kommet til i menuen. Er der en som kan løse dette problem for mig??

På forhånd mange tak :-)

/Stig ;-)
Avatar billede softspot Forsker
28. august 2005 - 23:54 #1
Kan du ud fra de parametre du sender med over til serveren finde ud af hvilket menupunkt der så skal være åbent? Hvis ja, så kan du på serveren generere den kode der skal til for at menuen er åben når siden kommer tilbage til klienten.
Avatar billede roenving Novice
29. august 2005 - 00:50 #2
For når du åbner siden igen, vil menuen jo ikke ane, at den er åbnet med en bestemt side !-)

-- man kan dog lave nogle tricks, hvor man undersøger om urlen i et link hører til den åbnede side, men den vil kun være til at implementere simpelt i et simpelt scenario !o]
Avatar billede stkol Nybegynder
29. august 2005 - 08:33 #3
Hej Roenvig og Softspot!

Ahh, ja, selvfølgelig, jeg sender jo bare menupunktets id med over i det "nye" dokument, og på tilbagevejen lader jeg den som jeg var på være åben!! Jeg vil lige arbejde lidt videre på det, og så hører i fra mig! Der kommer nok nogle spørgsmål i løbet af processen *S

/Stig :-)
Avatar billede stkol Nybegynder
30. august 2005 - 22:05 #4
Hej folkens

Jeg har siddet og kigget ovenstående script igennem i Laaaang tid, men jeg kan ikke se hvor jeg skal smide noget ala dette script ind:

<% 'if Request.querystring("VerticalMenuNo") = prodmenutaeller then %>

Jeg mener jo at ovenstående linie skal implementeres i denne sætning:

<p id="menu<%=prodmenutaeller%>" class="menuOut" onclick="SwitchMenu('sub<%=prodmenutaeller%>')" onmouseover="ChangeClass('menu<%=prodmenutaeller%>','menuOver')" onmouseout="ChangeClass('menu<%=prodmenutaeller%>','menuOut')"><%=Prodmenurs("menutext")%></p>
        <div class="submenu" id="sub<%=prodmenutaeller%>" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">

Men jeg kan ikke finde noget som trikker andet end onclick="SwitchMenu('sub<%=prodmenutaeller%>')", men alligevel syndes jeg ikke at kan få dette til at virke

Kan i udfra det som i nu ved fortælle mig hvad jeg skal gøre??

Hilsen

Stig :-)
Avatar billede roenving Novice
01. september 2005 - 07:43 #5
Det virker nu også som om menuen er baseret på en særdeles uheldig måde at udnytte javascripts evne til at pille i dokumentet ...

-- nemlig at den benytte sig af at skifte css-klasse on-the-fly, som vil betyde, at hele dokumentets rendering kastes i havet, og genskabes fra start, da browseren ikke kan gennemskue, hvilke betydninger en ændring af een klasse har for cascading, så den starter simpelthen forfra !-)

-- men hvis dit dokument ikke er særlig kompliceret, vil man nok ikke se det, mens et lidt mere kompliceret dokument med nesting og cascading, som vil noget, kan være helt op til flere sekunder om den genrendering, hvilket ikke er den smarteste mouse-over-ting, jeg kan forestille mig !o]

-- men hvis du fastholder menuen, er det præcis class-attributten i p-tagget, du skal ændre:

<p id="menu<%=prodmenutaeller%>" class="<% if Request.querystring("VerticalMenuNo") = prodmenutaeller then %>menuOver<% else %>menuOut<% endif %>" onclick="SwitchMenu('sub<%=prodmenutaeller%>')" onmouseover="ChangeClass('menu<%=prodmenutaeller%>','menuOver')" onmouseout="ChangeClass('menu<%=prodmenutaeller%>','menuOut')"><%=Prodmenurs("menutext")%></p>

-- og jeg har undladt at tage stilling til om man 'bare' kan skrive menuOut/menuOver i vb-tingen, samt om man skal fastholde mouseover/out på menupunkterne !-)
Avatar billede stkol Nybegynder
01. september 2005 - 13:02 #6
Hej Roenving

Desværre, det virker ikke :-( Hvad kan være galt??

/Stig :-)
Avatar billede roenving Novice
01. september 2005 - 13:09 #7
F.eks. at jeg skriver menuOver, det skal måske skrives "menuOver" !-)
Avatar billede stkol Nybegynder
01. september 2005 - 14:34 #8
Nej, den skriver du da rigtigt, den står bare før og efter if sætningen ;-)
Avatar billede roenving Novice
01. september 2005 - 14:40 #9
Hvordan ser det ud, når det rammer browseren (Vis kilde !-)
Avatar billede stkol Nybegynder
01. september 2005 - 14:48 #10
Det ser sådan ud før end der er klikket:



    <div id="cont">       
   

        <p id="menu1" class="menuOut" onclick="SwitchMenu('sub1')" onmouseover="ChangeClass('menu1','menuOver')" onmouseout="ChangeClass('menu1','menuOut')">Menu1                                            </p>
        <div class="submenu" id="sub1" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">
   
            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=1" title="1">1</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=2" title="2">2</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=3" title="3">3</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=4" title="4">4</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=5" title="5">5</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=6" title="6">6</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=7" title="7">7</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=8" title="8">8</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=9" title="9">9</a><br/>
       
        </div>

og sådan her når der er klikket:

<div id="cont">       
   

        <p id="menu1" class="menuOut" onclick="SwitchMenu('sub1')" onmouseover="ChangeClass('menu1','menuOver')" onmouseout="ChangeClass('menu1','menuOut')">Menu1                                            </p>
        <div class="submenu" id="sub1" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">
   
            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=1" title="1">1</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=2" title="2">2</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=3" title="3">3</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=4" title="4">4</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=5" title="5">5</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=6" title="6">6</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=7" title="7">7</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=8" title="8">8</a><br/>

            • <a href="main.asp?contentpage=productpage&menutext=Menu1                                            &VerticalMenuNo=1&varegruppe=1&vareart=9" title="9">9</a><br/>
       
        </div>
Avatar billede roenving Novice
01. september 2005 - 15:02 #11
Hrm ...

-- måske har de forskellig variabeltype, altså Request.querystring leverer en tekst-variabel mens prodmenutaeller er en integer, så prøv at konvertere den ene, f.eks.

CInt(Request.querystring("VerticalMenuNo") ) !-)
Avatar billede stkol Nybegynder
01. september 2005 - 15:54 #12
Tja! nu laver den da noget *GG Jeg ved ikke hvordan jeg ska forklare det, men jeg kan da prøve! Menuen, når man reloader, bliver ikke vist på den måde den skal, men derimod som tekst uden baggrund, men når man så kører musen henover teksten, bliver den lavet om til den måde som man gerne vil se den på, en menu af gangen. Klikker man så på undermenuen, hvor siden bliver genindlæst og det nye indhold kommer frem i "content" så er menuen tilbage til måden hvor den er tekst basseret, men uden at sub menuen bliver vist!!! ???
Avatar billede roenving Novice
01. september 2005 - 15:59 #13
Kan du ikke lave et nedbarberet eksempel, og så linke til det ?-)
Avatar billede stkol Nybegynder
01. september 2005 - 16:17 #14
Ja og nej, den server som DB og Hjemmeside kører på er pt ikke online og kommer det heller ikke pt. jeg har desværer ikke mulighed for at smide det over på de servere som er online, pga DB, hvad med at jeg lavede et simpelt eksempel i HTML og postede her eller mailede??? ville det hjælpe??
Avatar billede roenving Novice
01. september 2005 - 16:24 #15
Ja !-)
Avatar billede stkol Nybegynder
01. september 2005 - 16:25 #16
Fino! Der går nok lige 1-2 timer, så er den der, skal lige skifte lokation ;-)
Avatar billede roenving Novice
01. september 2005 - 16:25 #17
-- men hvis problemet hænger sammen med noget server-side kode, er der store chancer fro, at jeg ikke vil kunne gennemskue det, for det er ikke lige vbscript, som er min stærke side !-)
Avatar billede stkol Nybegynder
01. september 2005 - 17:17 #18
Jeg ved ikke om dette kan hjælpe, men her er det:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title></title>
   
<!-- Vertical Product Menu Start -->
   
<style type="text/css">
.menuOut {cursor:pointer; margin:1px; font-family:Verdana; font-size:11px; background-color:#0099cc; color:#000000; width:150px; border:1px solid #000000; padding:2px; text-align:left; font-family:Verdana; font-weight:bold;}
.menuOver {cursor:pointer; margin:1px; font-family:Verdana; font-size:11px; background-color:#000000; color:#0099cc; width:150px; border:1px solid #0099cc; padding:2px; text-align:left; font-family:Verdana; font-weight:bold;}
.submenu {width:150px; font-family:Verdana; font-size:11px; padding-left:5px;}
.submenu a {color:#000080; text-decoration:none; font-weight:none;}
.submenu a:hover {color:#ff0000; text-decoration:none; font-style:none; font-weight:none;}
</style>
<script type="text/javascript">

function SwitchMenu(obj){
    if(document.getElementById){
    var el = document.getElementById(obj);
    var ar = document.getElementById("cont").getElementsByTagName("DIV");
        if(el.style.display == "none"){
            for (var i=0; i<ar.length; i++){
                ar[i].style.display = "none";
            }
            el.style.display = "block";
        }else{
            el.style.display = "none";
        }
    }
}
function ChangeClass(menu, newClass) {
    if (document.getElementById) {
        document.getElementById(menu).className = newClass;
    }
}
document.onselectstart = new Function("return true");
</script>   
   
<!-- Vertical Product Menu End -->
   
</head>

<body onresize="window.location.href = window.location.href" onLoad="if ('Navigator' == navigator.appName) document.forms[0].reset(); SwitchMenu('sub0')" marginwidth="0" rightmargin="0" leftmargin="0" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<p id="top"></p>

<table width="768" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td colspan="5" width="768" style="height: 1px;" bgcolor="#000000"></td>
</tr>
<tr>
    <td rowspan="2" style="width: 1px;" bgcolor="#000000"></td>
    <td colspan="3" style="width: 766px; height: 120px;" bgcolor="#CCCCCC">
   
    </td>
    <td rowspan="2" style="width: 1px;" bgcolor="#000000"></td>
</tr>
<tr>
    <td width="150" bgcolor="#FFFFFF" valign="_top">
    <!-- Menu start -->
    <div id="cont">       
   
        <p id="menu1" class="menuOut" onclick="SwitchMenu('sub1')" onmouseover="ChangeClass('menu1','menuOver')" onmouseout="ChangeClass('menu1','menuOut')">Menu1                                            </p>
        <div class="submenu" id="sub1" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">
            • <a href="main.asp?contentpage=productpage&menutext=Menu1&VerticalMenuNo=1&varegruppe=1&vareart=1" title="1">1</a><br/>
            • <a href="main.asp?contentpage=productpage&menutext=Menu1&VerticalMenuNo=1&varegruppe=1&vareart=2" title="2">2</a><br/>
        </div>
        <p id="menu2" class="menuOut" onclick="SwitchMenu('sub2')" onmouseover="ChangeClass('menu2','menuOver')" onmouseout="ChangeClass('menu2','menuOut')">Menu2                                            </p>
        <div class="submenu" id="sub2" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">
            • <a href="main.asp?contentpage=productpage&menutext=Menu2&VerticalMenuNo=2&varegruppe=2&vareart=1" title="1">1</a><br/>
            • <a href="main.asp?contentpage=productpage&menutext=Menu2&VerticalMenuNo=2&varegruppe=2&vareart=2" title="2">2</a><br/>
        </div>
        <p id="menu3" class="menuOut" onclick="SwitchMenu('sub3')" onmouseover="ChangeClass('menu3','menuOver')" onmouseout="ChangeClass('menu3','menuOut')">Menu3                                            </p>
        <div class="submenu" id="sub3" style="display:none; background-color:#CCCCCC; border:1px solid #000000;">
            • <a href="main.asp?contentpage=productpage&menutext=Menu3&VerticalMenuNo=3&varegruppe=3&vareart=1" title="1">1</a><br/>
            • <a href="main.asp?contentpage=productpage&menutext=Menu3&VerticalMenuNo=3&varegruppe=3&vareart=2" title="2">2</a><br/>
        </div>
    </div>
    <!-- Menu end -->
    <br>
    <center>
    </td>
    <td style="width: 1px;" bgcolor="#000000"></td>
    <td width="608" valign="_top">

    <!-- ################################################################## -->
    <!-- Start of content area  -->
    <!-- ################################################################## -->   
   
   
            <!--      FRONT PAGE START      -->                       
                       
            <!--      FRONT PAGE END      -->   

            <!--      PRODUCTS PAGE START      -->                       

            <!--      PRODUCTS PAGE END      -->                       
   
    <!-- ################################################################## -->
    <!-- End of content area  -->
    <!-- ################################################################## -->       
   
    </td>
</tr>
<tr>
    <td colspan="5" style="height: 1px;" bgcolor="#000000"></td>
</tr>
</table>

<br>
<br>

</body >
</html>
Avatar billede stkol Nybegynder
01. september 2005 - 17:20 #19
Ovenstående er et MEGET lille udklip af selve siden som pt. fylder 1611 liniers kode, men ovenstående er det der har med menuen at gøre!!
Avatar billede stkol Nybegynder
01. september 2005 - 17:32 #20
Halløjsa... Så er vi et skridt videre. Den indikerer nu med en farve hvilken menu man kommer fra, men der er ikke expanded så man kan se under menuerne... Jeg gjorde det at jeg gik ind og satte en CInt ind sådan her :

class="<% if CInt(Request.querystring("VerticalMenuNo")) = CInt(prodmenutaeller)

hvilket har givet farve identifikationen, så nu skal den bare ekspandere sub menuen også ;-) Hvordan gør vi det????
Avatar billede roenving Novice
01. september 2005 - 17:38 #21
Tilføj dette, hvis der er en VerticalMenuNo:

<script type="text/javascript">window.onload = function(){SwitchMenu('sub'+<% Request.querystring("VerticalMenuNo") );};</script>
Avatar billede stkol Nybegynder
01. september 2005 - 17:46 #22
Hvor skal jeg smide det for at få det til at virke??
Avatar billede roenving Novice
01. september 2005 - 23:34 #23
Et eller andet sted, forudsat at du ikke har andre onload-funktioner !-)
Avatar billede stkol Nybegynder
02. september 2005 - 08:01 #24
Jeg har allerede en onload funktion!! :-)

Den kommer med en syntaks fejl i scriptet:

<script type="text/javascript">
    window.onload = function(){SwitchMenu('sub'+<% Request.querystring("VerticalMenuNo")%> );};
</script>
Avatar billede roenving Novice
02. september 2005 - 22:01 #25
Hvaffen ?-)
Avatar billede stkol Nybegynder
02. september 2005 - 22:47 #26
For satan da ikk oss!!! Y E S ! ! nu virker det ;-) Som sagt så var der flere Onloads, bla en SwitchMenu('sub0') denne er nu erstattet af :

SwitchMenu('sub<% if Request.querystring("VerticalMenuNo") = "" then Response.Write "0" else Response.Write trim(Request.querystring("VerticalMenuNo")) end if %>')

Og så virker det dælme *S MANGE TAK FOR HJÆLPEN !!!! (smider du et svar?? ;-))
Avatar billede roenving Novice
02. september 2005 - 23:21 #27
Velbekomme '-)
Avatar billede roenving Novice
03. september 2005 - 23:42 #28
-- og 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