02. august 2005 - 08:57Der er
2 kommentarer og 1 løsning
Klapsammen Menu
Nedenstående kode indgå i en menu, hvor jeg har problemer men 2 ting.
Som den er nu, er den opbygget med nogle "Quicklinks" øverst. Dvs menupunkter hvor der ingen tilhørende underpunkter er. Nederst i menuen er der menupunkter med tilhørende underpunkter. Når man klikker på et af dissse underpunkter foldes menuen ud. Når man efter følgende klikker på et andet undermenupunkt folder det forrige sig sammen og det nye sig ud. Ganske smart, men nu kommer problemet. Hvis man herefter klikker på et af de øverste menupunkter, altså et uden underpunkter, folder det nylig klikkede menupunkt sig ikke sammen. Det vil jeg gerne have hjælp til at den gør.
Det andet problem er, at når der er et menupunkt med underpunkter er der et plus foran menuteksten (grafikfil). Når det så folder sig ud vil jeg gerne have den til at ændre sig til et minus. Samtidig når det folder sig sammen igen skal det blive til et plus. Kan det lade sig gøre?.
************************************************************** <!-- #INCLUDE FILE="inc.asp" --> <% u_user=request.querystring("u_user") ' assigns the variable u_number to the value ' that u_value contains in the url %> <% varUser=request.form("u_user") %> <HTML> <HEAD> <LINK rel="stylesheet" type="text/css" href="style.css"> <title>Links <%= u_user %></title> <base target="main">
<script> foer = null;
function highlight(lnk) { if (foer) foer.style.color = "#FFFFFF"; lnk.style.color = "#FFFF00"; foer = lnk; } </script>
<SCRIPT> function MenuClick(tal) { var tal_str = "" + tal var tal_arr = tal_str.split(",") var y = document.all("txt_" + tal_arr[0]); var lukket = "True" if(y.style.display == ''){ lukket = "False" } var x=document.getElementsByTagName("DIV") for (i = 0; i < x.length; i++){ x[i].style.display = 'none' } if(lukket == "True"){ var txt = document.all("txt_" + tal_arr[0]); txt.style.display = ''; } for (i=1; i<tal_arr.length; i++){ var txt = document.all("txt_" + tal_arr[i]); txt.style.display = ''; } } </SCRIPT>
</HEAD> <body class="menu<%= u_user %>">
<% Dim varUser varUser = u_user
LavDatabase Conntemp
SQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID < 0 and User= ('" & varUser & "') 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 Response.Write "<A class=menu" & varUser & " HREF=""" & RS("Link") & """ OnClick=""highlight(this);MenuClick(" & RS("ID") & ");"" TARGET=""" & RS("Target") & """>" & RS("Navn") & "</A>"&vbCrLf RS.MoveNext Wend End If LukDatabase Conntemp %>
<% Function BygMenu(MenuID) OverSQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID = 0 and User= ('" & varUser & "') ORDER BY [Order]" Call OpenRS(Conntemp,OverSQL,UnderRS)
While Not UnderRS.EOF Response.Write "<A class=menu" & varUser & " HREF=""" & UnderRS("Link") & """ TARGET="""">" & UnderRS("Navn") & ""
Function BygUnderMenu(MenuID,Liste) UnderSQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID = " & MenuID & " and User= ('" & varUser & "') ORDER BY [Order]" Call OpenRS(Conntemp,UnderSQL,UnderRS) Response.Write "<DIV ID=""txt_" & MenuID & """ STYLE=""display: none; margin-left: 10px;"">"&vbCrLf While Not UnderRS.EOF If CountSubs(UnderRS("ID")) > 0 Then Response.Write "<A class=menu" & varUser & " HREF=""fra_main.htm"" OnClick=""MenuClick('" & UnderRS("ID") & "," & Liste & "');highlight(this);""><B><img src=""images/plus.gif"" width=13 height=12 border=0>" & UnderRS("Navn") & "</B></A>"&vbCrLf Liste = UnderRS("ID") & "," & Liste Call BygUnderMenu (UnderRS("ID"), Liste) 'Til hvert underkald fjernes hovedet af listen så rekursiviteten kører temp = Split(Liste,",") if UBound(temp) > 0 then nyListe = "" temp = Split(Liste,",") for t=1 to UBound(temp) if t=1 then nyListe = temp(t) else nyListe = nyListe &","& temp(t) end if next Liste = nyListe else Liste = MenuID end if
Else Response.Write "<A class=menu" & varUser & " OnClick=""highlight(this);"" HREF=""" & UnderRS("Link") & """ TARGET=""" & UnderRS("Target") & """><img src=""images/leaf.gif"" width=13 height=12 border=0>" & UnderRS("Navn") & "</A>"&vbCrLf End If UnderRS.MoveNext Wend Response.Write "</DIV>" End Function
Function CountSubs(MenuID) CountSQL = "SELECT ID, User FROM Menu WHERE MenuID = " & MenuID & " and User= ('" & varUser & "')" Call OpenRS(Conntemp,CountSQL,CountRS) CountSubs = CountRS.RecordCount End Function
LavDatabase Conntemp
SQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID = 0 and User= ('" & varUser & "') ORDER BY [Order]"
Call OpenRS(Conntemp,SQL,RS)
If RS.BOF AND RS.EOF Then Response.Write "Ingen data" Else RS.MoveFirst While Not RS.EOF If CountSubs(RS("ID")) > 0 Then Response.Write "<A class=menu" & varUser & " HREF=""fra_main.htm"" TARGET=" & RS("Target") & " OnClick=""MenuClick(" & RS("ID") & ");highlight(this);""><B><img src=""images/plus.gif"" width=13 height=12 border=0>" & RS("Navn") & "</B></A>"&vbCrLf Call BygUnderMenu (RS("ID"),RS("ID")) Else Response.Write "<A class=menu" & varUser & " HREF=""" & RS("Link") & """><img src=""images/leaf.gif"" width=13 height=12 border=0>" & RS("Navn") & "</A>"&vbCrLf End If RS.MoveNext Wend End If
Synes jeg har hjulpet dig med din menu før Så jeg har kigget lidt nærmere på det :o) Jeg har givet alle billederne et Id tilsvarende det id der allerede benyttes I scriptet har jeg gjort så det først laver alle minusser om til plusser, og dernæst laver de plusser om til minusser som skal vises Jeg har tilføjet en lukke funtion som lukker det hele Denne funktion kaldes på dine øverste links, hvorved de lukker menuen Håber det giver den ønskede effekt hos dig som det gør her hos mig :o) ----- <!-- #INCLUDE FILE="inc.asp" --> <% u_user=request.querystring("u_user") ' assigns the variable u_number to the value ' that u_value contains in the url %> <% varUser=request.form("u_user") %> <HTML> <HEAD> <LINK rel="stylesheet" type="text/css" href="style.css"> <title>Links <%= u_user %></title> <base target="main">
<script> foer = null;
function highlight(lnk) { if (foer) foer.style.color = "#FFFFFF"; lnk.style.color = "#FFFF00"; foer = lnk; } </script>
<SCRIPT> function MenuClick(tal) { var tal_str = "" + tal var tal_arr = tal_str.split(",") var y = document.getElementById("txt_" + tal_arr[0]); var lukket = true; if(y.style.display == ''){ lukket = false; } LukMenu(); if(lukket){ y.style.display = ''; document.getElementById(tal_arr[0]).src = 'images/minus.gif'; } for (i=1; i<tal_arr.length; i++){ var txt = document.getElementById("txt_" + tal_arr[i]); txt.style.display = ''; var img = document.getElementById(tal_arr[i]); img.src = 'images/minus.gif'; } } function LukMenu(){ var x=document.getElementsByTagName("DIV") for (i = 0; i < x.length; i++){ x[i].style.display = 'none' } x = document.getElementsByTagName("IMG") for (i = 0; i < x.length; i++){ var src_arr = x[i].src.split("/") if (src_arr[src_arr.length-1] == 'minus.gif'){ x[i].src = 'images/plus.gif' } } } </SCRIPT>
</HEAD> <body class="menu<%= u_user %>">
<% Dim varUser varUser = u_user
LavDatabase Conntemp
SQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID < 0 and User= ('" & varUser & "') 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 Response.Write "<A class=menu" & varUser & " HREF=""" & RS("Link") & """ OnClick=""highlight(this);LukMenu();"" TARGET=""" & RS("Target") & """>" & RS("Navn") & "</A>"&vbCrLf RS.MoveNext Wend End If LukDatabase Conntemp %>
<% Function BygMenu(MenuID) OverSQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID = 0 and User= ('" & varUser & "') ORDER BY [Order]" Call OpenRS(Conntemp,OverSQL,UnderRS)
While Not UnderRS.EOF Response.Write "<A class=menu" & varUser & " HREF=""" & UnderRS("Link") & """ TARGET="""">" & UnderRS("Navn") & ""
Function BygUnderMenu(MenuID,Liste) UnderSQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID = " & MenuID & " and User= ('" & varUser & "') ORDER BY [Order]" Call OpenRS(Conntemp,UnderSQL,UnderRS) Response.Write "<DIV ID=""txt_" & MenuID & """ STYLE=""display: none; margin-left: 10px;"">"&vbCrLf While Not UnderRS.EOF If CountSubs(UnderRS("ID")) > 0 Then Response.Write "<A class=menu" & varUser & " HREF=""fra_main.htm"" OnClick=""MenuClick('" & UnderRS("ID") & "," & Liste & "');highlight(this);""><B><img id="""&UnderRS("ID")&""" src=""images/plus.gif"" width=13 height=12 border=0>" & UnderRS("Navn") & "</B></A>"&vbCrLf Liste = UnderRS("ID") & "," & Liste Call BygUnderMenu (UnderRS("ID"), Liste) 'Til hvert underkald fjernes hovedet af listen så rekursiviteten kører temp = Split(Liste,",") if UBound(temp) > 0 then nyListe = "" temp = Split(Liste,",") for t=1 to UBound(temp) if t=1 then nyListe = temp(t) else nyListe = nyListe &","& temp(t) end if next Liste = nyListe else Liste = MenuID end if
Else Response.Write "<A class=menu" & varUser & " OnClick=""highlight(this);"" HREF=""" & UnderRS("Link") & """ TARGET=""" & UnderRS("Target") & """><img src=""images/leaf.gif"" width=13 height=12 border=0>" & UnderRS("Navn") & "</A>"&vbCrLf End If UnderRS.MoveNext Wend Response.Write "</DIV>" End Function
Function CountSubs(MenuID) CountSQL = "SELECT ID, User FROM Menu WHERE MenuID = " & MenuID & " and User= ('" & varUser & "')" Call OpenRS(Conntemp,CountSQL,CountRS) CountSubs = CountRS.RecordCount End Function
LavDatabase Conntemp
SQL = "SELECT ID, Navn, Link, User, Target, Beskrivelse FROM Menu WHERE MenuID = 0 and User= ('" & varUser & "') ORDER BY [Order]"
Call OpenRS(Conntemp,SQL,RS)
If RS.BOF AND RS.EOF Then Response.Write "Ingen data" Else RS.MoveFirst While Not RS.EOF If CountSubs(RS("ID")) > 0 Then Response.Write "<A class=menu" & varUser & " HREF=""fra_main.htm"" TARGET=" & RS("Target") & " OnClick=""MenuClick(" & RS("ID") & ");highlight(this);""><B><img id="""&RS("ID")&""" src=""images/plus.gif"" width=13 height=12 border=0>" & RS("Navn") & "</B></A>"&vbCrLf Call BygUnderMenu (RS("ID"),RS("ID")) Else Response.Write "<A class=menu" & varUser & " HREF=""" & RS("Link") & """><img src=""images/leaf.gif"" width=13 height=12 border=0>" & RS("Navn") & "</A>"&vbCrLf End If RS.MoveNext Wend End If
tryller ryller ri ;o) ps har lagt svar i det andet spørgsmål også :o) Håber det hele virker, ellers må du sige til jo
Synes godt om
Ny brugerNybegynder
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.