Jag har en treemenu som jag vill lägga till en funktion i.
Tyvärr så är mina javascript kunskaper begränsade, så jag tar er till hjälp.
Jag vill ha en funktion som stänger alla öppna noder när den anropas men vet inte riktigt hur jag ska gå till väga.
//*************************************************************************************************
function setTreeMode(name, value, expires, path, domain, secure)
{
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
//alert(curCookie);
}
//*************************************************************************************************
function getTreeMode(name)
{
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1)
end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
}
//*************************************************************************************************
var menu_state = new Array();
function treeNode(expand, caption, link, target, number, level)
{
// Node properties
this.expand = expand;
this.caption = caption;
this.link = link;
this.target = target;
this.number = number;
this.level = level;
this.next = null;
this.subtree = null;
// Node methods
this.AddChild = treeAddChild;
this.AddSibling = treeAddSibling;
this.Display = treeDisplay;
}
var buildProgress = 0;
function addToTree(arr)
{
var start = buildProgress;
var m = new treeNode(menu_state[start]=='1',arr[start][1],arr[start][2],arr[start][3], start, arr[start][0]);
buildProgress++;
var done = (buildProgress >= arr.length);
var s = m;
while (!done)
{
if (arr[start][0] == arr[buildProgress][0])
{
j = buildProgress;
s = s.AddSibling(menu_state[j]=='1',arr[j][1],arr[j][2],arr[j][3], j, arr[j][0]);
buildProgress++;
}
else if (arr[start][0] < arr[buildProgress][0])
{
s.subtree = addToTree(arr);
}
else if (arr[start][0] > arr[buildProgress][0])
{
done = true;
}
done = done || (buildProgress >= arr.length);
}
return m;
}
function treeExpand(n)
{
menu_state[n] = '1';
setTreeMode('TREEMENU_STATE', menu_state.join('|'));
history.go(0);
}
function treeCollapse(n)
{
menu_state[n] = '0';
setTreeMode('TREEMENU_STATE', menu_state.join('|'));
history.go(0);
}
function buildMenu(arr)
{
var menu_state_cookie = getTreeMode('TREEMENU_STATE');
if (menu_state_cookie != undefined)
{
menu_state = menu_state_cookie.split('|');
}
buildProgress = 0;
return addToTree(arr, 0);
}
function treeAddSibling(expand,caption,link,target, number, level)
{
s = this;
while (s.next != null)
{
s = s.next;
}
s.next = new treeNode(expand,caption,link,target, number, level);
return s.next;
}
function treeAddChild(expand, caption, link, target, number, level)
{
var n;
if (this.subtree == null)
{
n = new treeNode(expand,caption,link,target, number, level);
this.subtree = n;
}
else
{
n = this.subtree.AddSibling(expand,caption,link,target,number, level);
}
return n;
}
function indent(level)
{
document.write('<TABLE><TR>');
for (i=0; i<level; i++)
{
//document.write('<img src="../../../images/tree_space2.gif" align=middle>');
//STMA
//document.write('<TD VALIGN=TOP height=10> </TD>');
document.write('<TD VALIGN=TOP><font size="1"> </font></TD>');
}
}
function treeDisplay()
{
indent(this.level);
if (this.subtree == null)
{
var link = this.link;
link = link.toUpperCase();
//skala bort sökvägen till link för att få filnamn
var fileName = link;
var slash = fileName.lastIndexOf("\/");
fileName = fileName.slice(slash + 1, fileName.length);
//Kontrollera om fileName innehåller index + html
var searchString1 = fileName.search("INDEX");
var searchString2 = fileName.search(".HTML");
//alert(fileName + ":::" + slash + ":::" + searchString1 + ":::" + searchString2);
var len = link.length;
var extension = link.slice(len-4, len);
extension = extension.toUpperCase();
//Första if kollar om filnamnet innehåller både index och html
if((searchString1!=-1) && (searchString2!=-1))
{
//alert("det är index .html");
document.write('<TD VALIGN=TOP><img src="../../../images/index.gif" align=middle></TD>');
}
else if(extension=="HTML")
{
//HTML-skal med film i sig, kan ge problem
document.write('<TD VALIGN=TOP><img src="../../../images/mpeg.gif" align=middle></TD>');
//alert("html: " + extension);
}else if(extension == ".MPG" || extension == "MPEG")
{
//Det är en MPEG fil
//alert("mpg: " + extension);
document.write('<TD VALIGN=TOP><img src="../../../images/mpeg.gif" align=middle></TD>');
}
else if(extension==".DOC")
{
//Det är ett word dokument
//alert("doc: " + extension);
document.write('<TD VALIGN=TOP><img src="../../../images/word.gif" align=middle></TD>');
}
else if(extension==".DOT")
{
//Det är en wordmall
//alert("dot: " + extension);
document.write('<TD VALIGN=TOP><img src="../../../images/word.gif" align=middle></TD>');
}
else if(extension==".XLS")
{
//Det är ett Excel dokument
//alert("xls: " + extension);
document.write('<TD VALIGN=TOP><img src="../../../images/excel.gif" align=middle></TD>');
}
else if(extension==".XLT")
{
//Det är en excelmall
//alert("xlt: " + extension);
document.write('<TD VALIGN=TOP><img src="../../../images/excel.gif" align=middle></TD>');
}
else if(extension==".PPT")
{
//En powerpoint
document.write('<TD VALIGN=TOP><img src="../../../images/ppt.gif" align=middle></TD>');
//alert("ppt: " + extension);
}
else if(extension==".PPS")
{
//En powerpoint
document.write('<TD VALIGN=TOP><img src="../../../images/ppt.gif" align=middle></TD>');
//alert("pps: " + extension);
}
else if(extension==".PDF")
{
//En adobe pdf
document.write('<TD VALIGN=TOP><img src="../../../images/pdfmini.gif" align=middle></TD>');
//alert("pdf: " + extension);
}
else if(extension==".EXE")
{
//En adobe pdf
document.write('<TD VALIGN=TOP><img src="../../../images/applic.gif" align=middle></TD>');
//alert("exe: " + extension);
}
else if(extension==".ZIP")
{
//En zip fil
document.write('<TD VALIGN=TOP><img src="../../../images/zip.gif" align=middle></TD>');
//alert("zip: " + extension);
}
else if(extension==".HTML")
{
//HTML-skal med film i sig, kan ge problem
document.write('<TD VALIGN=TOP><img src="../../../images/mpeg.gif" align=middle></TD>');
//alert("html: " + extension);
}else
{
document.write('<TD VALIGN=TOP><img src="images/text.gif" align=middle></TD>');
//document.write('<img src="../../../images/tree_space2.gif" align=middle>');
//alert("resten" + extension);
}
}
else
if (this.expand)
{
if(this.link != '')
{
document.write('<TD VALIGN=TOP><a href="javascript: treeCollapse('+this.number+')"><img src="images/tree_collapse.gif" align=middle border=no></a></TD>');
}
else
{
document.write('<TD VALIGN=TOP><a href="javascript: treeCollapse('+this.number+')"><img src="../../../images/folder_open.gif" align=middle border=no></a></TD>');
}
}else{
if(this.link != '')
{
document.write('<TD VALIGN=TOP><a href="javascript: treeExpand('+this.number+')"><img src="images/tree_expand.gif" align=middle border=no></a></TD>');
}else{
document.write('<TD VALIGN=TOP><a href="javascript: treeExpand('+this.number+')"><img src="../../../images/folder_close.gif" align=middle border=no></a></TD>');
}
}
if (this.link != '') {
document.writeln('<TD><a href="'+this.link+'" target="'+this.target+'" title="'+this.caption+'"><font class="loptxt">'+this.caption+'</font></a></TD>');
} else {
//document.write('<TD VALIGN=TOP><img src="../../../images/folder_open.gif" align=middle></TD>');
document.writeln('<TD> <font class="loptxt">'+this.caption+'</font></TD>');
}
document.write('</TR></TABLE>');
if (this.subtree!=null && this.expand) this.subtree.Display();
if (this.next != null) this.next.Display();
}