webForumDet fria alternativet

Cookie funktion till meny

0 svar · 213 visningar · startad av Nino82

Nino82Medlem sedan juli 20035 inlägg
#1

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.

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)