Avatar billede c-lund Nybegynder
25. marts 2004 - 16:17 Der er 21 kommentarer og
1 løsning

tree menu

jeg har fundet en tree menu, men når man trykker på et under punkt og siden vises, så lukker menuen igen (pågrund af reload) hvordan for man den til at lade være med det

<!-- #INCLUDE FILE="inc.asp" -->
<HTML>
<HEAD>
<TITLE></TITLE>

<SCRIPT>
function MenuClick(MenuID) {
  var txt = document.all("txt_" + MenuID);
  if (txt.style.display == 'none') {
    txt.style.display = '';
  }
  else {
    txt.style.display = 'none';
  }
}
</SCRIPT>

</HEAD>
<BODY BGCOLOR="#FFFFFF">

<%
    Function BygUnderMenu(MenuID)
        UnderSQL = "SELECT ID, Navn, Link FROM Menu WHERE MenuID = " & MenuID & " ORDER BY [Order]"
        Call OpenRS(Conntemp,UnderSQL,UnderRS)
       
        Response.Write "<DIV ID=""txt_" & MenuID & """ STYLE=""display: none; margin-left: 10px;"">"
        While Not UnderRS.EOF
            If CountSubs(UnderRS("ID")) > 0 Then
                Response.Write "<A HREF=""#"" OnClick=""MenuClick(" & UnderRS("ID") & ")""><B>" & UnderRS("Navn") & "</B></A><BR>"
                BygUnderMenu UnderRS("ID")
            Else
                Response.Write "<A HREF=""" & UnderRS("Link") & """ TARGET="""">" & UnderRS("Navn") & "<BR>"
            End If
            UnderRS.MoveNext
        Wend
        Response.Write "</DIV>"
    End Function

    Function CountSubs(MenuID)
        CountSQL = "SELECT ID FROM Menu WHERE MenuID = " & MenuID & ""
        Call OpenRS(Conntemp,CountSQL,CountRS)
        CountSubs = CountRS.RecordCount
    End Function

    LavDatabase Conntemp

    SQL = "SELECT ID, Navn, Link FROM Menu WHERE MenuID = 0 ORDER BY [Order]"
    Call OpenRS(Conntemp,SQL,RS)
   
    If RS.BOF AND RS.EOF Then
        Response.Write "FEJL"
    Else
        RS.MoveFirst
        While Not RS.EOF
            If CountSubs(RS("ID")) > 0 Then
                Response.Write "<A HREF=""#"" OnClick=""MenuClick(" & RS("ID") & ")""><B>" & RS("Navn") & "</B></A><BR>"
                BygUnderMenu RS("ID")
            Else
                Response.Write "<A HREF=""" & RS("Link") & """>" & RS("Navn") & "<BR>"
            End If
            RS.MoveNext
        Wend
    End If
   
    LukDatabase Conntemp
%>
</BODY>
</HTML>

mvh.
christian
Avatar billede nute Nybegynder
25. marts 2004 - 17:28 #1
istedet for at skrive

Response.Write "<A HREF=""#""

altså at bruge # i din href, så brug hellere 'java script:void(0)':

Response.Write "<A HREF=""java script:void(0)""

Hvad skal der egentlig ske når du klikker på et undermenu punkt ? skal du åbne den samme side ?
/nute
Avatar billede c-lund Nybegynder
26. marts 2004 - 09:33 #2
menuen er includeret i hoved filen, og når man trykke på et underpunkt, bliver hoved siden skiftet ud med den samme side, men hvor den har hentet noget fra en database. derfor m ville det være godt hvis menuen stadig var åben
Avatar billede c-lund Nybegynder
26. marts 2004 - 09:34 #3
hvad gør java script:void(0)
Avatar billede nute Nybegynder
26. marts 2004 - 09:38 #4
ingenting ... det er en funktion der ikke gør noget, men resultatet er at, hvis man har den i en href, så bliver ikke linket "aktiveret". Den fungerer som en "cancel" funktion i dette tilfælde og forhindrer at det, der står i din href, bliver kaldt

/nute
Avatar billede nute Nybegynder
26. marts 2004 - 09:41 #5
hvis du vil have menupunktet åben, så sender du med menuid til den næste side. Denne linie:

Response.Write "<A HREF=""" & RS("Link") & """>" & RS("Navn") & "<BR>"

laver du om til :

Response.Write "<A HREF=""" & RS("Link") & "?menuid=" & RS("ID") & """>" & RS("Navn") & "<BR>"

Derefter laver du denne linie:

Response.Write "<DIV ID=""txt_" & MenuID & """ STYLE=""display: none; margin-left: 10px;"">"

om til

strDisplay = "none"
if( Request( "menuid" ) = CStr( MenuID ) ) then
    strDisplay = "block"
end if
Response.Write "<DIV ID=""txt_" & MenuID & """ STYLE=""display: " & strDisplay & "; margin-left: 10px;"">"

/nute
Avatar billede c-lund Nybegynder
26. marts 2004 - 11:04 #6
den lukker desværre stadig menu.
Avatar billede nute Nybegynder
26. marts 2004 - 11:10 #7
får du sendt 'menuid' over som parameter ? modtager du 'menuid' parametret korrekt ?
Avatar billede c-lund Nybegynder
26. marts 2004 - 11:32 #8
tak for hjælpen, men jeg dropper den her menu, har fundet en bedre en i CSS
hvis du vil have nogle point så må du lige lægge et svar
Avatar billede nute Nybegynder
26. marts 2004 - 11:44 #9
oki ... men jeg deler gerne. ikke nogen pointe i at uddele 75 E-scudos for en "ikke-løsning" ;o]
Avatar billede c-lund Nybegynder
26. marts 2004 - 12:29 #10
hej igen, det andet script måtte man ikke bruge.

men jeg for står ikke helt hvad du mener.
her er filerne, jeg tror det kommer til at spare os for en masse tid, er nemlig ikke så god til asp endnu
http://www.urbaneye.dk/lund/menu.zip
Avatar billede nute Nybegynder
26. marts 2004 - 13:28 #11
While Not UnderRS.EOF
            If CountSubs(UnderRS("ID")) > 0 Then
                Response.Write "<A HREF=""java script:void(0);"" OnClick=""MenuClick(" & UnderRS("ID") & ")""><B>" & UnderRS("Navn") & "</B></A><BR>"
                BygUnderMenu UnderRS("ID")
            Else
                Dim strConcat : strConcat = "&"
                if( UnderRS("Link") = "" ) then
                    strConcat = "?"
                end if
                Response.Write "<A HREF=""" & UnderRS("Link") & strConcat & "menuid=" & RS("ID") & """ TARGET="""">" & UnderRS("Navn") & "<BR>"
            End If
            UnderRS.MoveNext
        Wend

og

While Not RS.EOF
            If CountSubs(RS("ID")) > 0 Then
                Response.Write "<A HREF=""java script:void(0)"" OnClick=""MenuClick(" & RS("ID") & ")""><B>" & RS("Navn") & "</B></A><BR>"
                BygUnderMenu RS("ID")
            Else
                Response.Write "<A HREF=""" & RS("Link") & "?menuid=" & RS("ID") & """>" & RS("Navn") & "....<BR>"
            End If
            RS.MoveNext
        Wend
Avatar billede c-lund Nybegynder
26. marts 2004 - 13:50 #12
syntes ikke lige at det virker, men snakker vi om det samme problem.
Avatar billede nute Nybegynder
26. marts 2004 - 14:05 #13
du vil meget gerne have at din menu er åben, når du klikker ind på et undermenu punkt. sådan det fungerer for mig nu, er at når jeg klikker på "Logo >> UnderMenu1", så ... ehh ... øv, det gik der noget galt. denne kode:

Dim strConcat : strConcat = "&"
                if( UnderRS("Link") = "" ) then
                    strConcat = "?"
                end if


skal være

Dim strConcat : strConcat = "?"
                if( InStr( UnderRS("Link"), "?" ) > 0 ) then
                    strConcat = "&"
                end if

anyway ... når denne kode er på plads, så forbliver punkt 'Logo' åben. Hvis jeg klikker ind under 'Website >> Highimage', så forbliver 'website' åben

/nute
Avatar billede nute Nybegynder
26. marts 2004 - 14:05 #14
BTW ... "synes ikke lige at det virker" er ikke særlig emget at blive klog på. hvis du ønsker at nogen skal hjælpe dig, så er du jo nødt til at fortælle *hvad* der går galt ;o]
Avatar billede c-lund Nybegynder
26. marts 2004 - 14:20 #15
den holder sig ikke åben hos mig, ved ikke helt hvad jeg gør galt. kunne du ikke evt. prøve at sende mig de filer du sidder med.
christian@urbaneye.dk
Avatar billede nute Nybegynder
26. marts 2004 - 14:32 #16
Avatar billede c-lund Nybegynder
26. marts 2004 - 14:35 #17
filen er beskadigt
Avatar billede nute Nybegynder
26. marts 2004 - 14:40 #18
Avatar billede c-lund Nybegynder
26. marts 2004 - 14:45 #19
ja, det virker som det skal :). men jeg kunne ikke åbne zip filen
Avatar billede nute Nybegynder
26. marts 2004 - 14:47 #20
jeg har lagt den op på¨ny... prøv igen
Avatar billede c-lund Nybegynder
26. marts 2004 - 14:53 #21
yep, nu er alt lækkert. tak
Avatar billede nute Nybegynder
26. marts 2004 - 14:58 #22
selv tak :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