Hej!
Jag har ett JavaScript som gör om en ul-lista till en trädmeny och allt fungerar kanon, förutom att listan åker ihop igen när man byter sida eller uppdaterar sidan.
Jag undrar därför om det finns någon vänlig person här på forumet som är duktig på JavaScript och cookies, som kan fixa en sådan funktion till mig.
JavaScriptet som gör om ul-listan ser ut så här:
function TreeMenu(id) {
if (document.getElementById) {
this.menuRoot = document.getElementById(id);
var listEls = this.menuRoot.getElementsByTagName("LI");
for (var i = 0; i < listEls.length; i++) {
if (listEls[i].className.indexOf("folder")>-1) {
listEls[i].getElementsByTagName("A")[0].onclick = function () {
this.parentNode.toggleOpen();
return false;
}
listEls[i].toggleOpen = function() {
(this.className.indexOf("closed")>-1)?this.open():this.close();
}
listEls[i].open = function() {
this.className = this.className.replace(/\sclosed(\s|$)/, "");
}
listEls[i].close = function() {
this.className += " closed";
}
listEls[i].toggleOpen();
}
}
}
}
TreeMenu.prototype.expandTo = function(id) {
if (document.getElementById) {
var node = document.getElementById(id);
while (node!=null && node!=this.menuRoot) {
if (node.open) node.open();
node = node.parentNode;
}
}
}
window.onload = function() {
menu = new TreeMenu("sub-nav");
}
Sen skriver jag ut ul-listan (menyn) med asp så här:
'Öppnar databasen
Call dbOpen(Connect)
intSpace = 0
Sub PrintTree(intParent)
strSQL = "Select * From t_categories Where parentID="& intParent &" And active=True Order By sorting asc"
Set objCategories = Connect.Execute(strSQL)
Response.Write(Space(intSpace * 2) & "<ul>" & vbCrLf)
intSpace = intSpace + 1
Do Until objCategories.EOF
strSQL = "Select parentID From t_categories Where parentID = "& objCategories(0)
Set objNode = Connect.Execute(strSQL)
If Not objNode.EOF Then
Response.Write(Space(intSpace * 2) & "<li class=""folder""><a href=""#"" title="""& objCategories(2) &""">"& objCategories(2) &"</a>" & vbCrLf)
intSpace = intSpace + 1
PrintTree objNode(0)
Else
Response.Write(Space(intSpace * 2) & "<li><a href=""list.asp?catid="& objCategories(0) &""" title="""& objCategories(2) &""">" & objCategories(2) & "</a></li>" & vbCrLf)
End If
objNode.Close : Set objNode = Nothing
objCategories.MoveNext
Loop
objCategories.Close : Set objCategories = Nothing
intSpace = intSpace - 1
If intSpace = 0 Then
Response.Write("</ul>" & vbCrLf)
Else
Response.Write(Space(intSpace * 2) & "</ul>" & vbCrLf & Space((intSpace - 1) * 2) & "</li>" & vbCrLf)
intSpace = intSpace - 1
End If
End Sub
PrintTree 0
Call dbClose(Connect)
Det finns en liknande meny på http://www.dynamicdrive.com/dynamicindex1/navigate1.htm som använder cookies om det kan vara till någon hjälp.
Vore väldigt!!! tacksam om någon kunde hjälpa mig med detta.