By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,955 Members | 1,793 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,955 IT Pros & Developers. It's quick & easy.

contract and expand menus based on the previous state

P: n/a
I don't know what it is I am doing wrong, I am trying to get the menus to
either expand or contract based on their previous states, i.e if already
expanded if clicked again contract, and if contracted, expand, so far it
doesn't work for the about and services link(but works for the expand all
and contract all links), any help would be greatly appreciated:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Welcome </title>
<link rel="stylesheet" type="text/css"
href="style.css" />
<script type="text/javascript" src="simpletreemenu.js">
</script>
</head>
<div id="wrapper">

<div id="header">
</div>

<table id="table">
<tr>
<td id="empty"></td>

<td rowspan="2" id="content">
</td>

</tr>

<tr>
<td id="menu">
Sidebar
<h4>Menu</h4>

<a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>

<ul id="treemenu1" class="treeview">
<li>Home</li>
<li><a href="javascript:ddtreemenu.flatten('treemenu1abou t',
'contact')">About</a>
<ul id="treemenu1about">
<li>History</li>
<li>Job opportunities</li>
</ul>
</li>
<li><a href="javascript:ddtreemenu.flatten('treemenu1serv ices',
'contact')">Services</a>
<ul id="treemenu1services">
<li>Virtual assistants</li>
<li>Website design and promotion
<ul>
<li>Website design</li>
<li>Search engine optimisation</li>
<li>Website promotion </li>
<liWebsite hosting</li>
</ul>
</li>

</ul>
</li>

<li>Faq</li>
<li>Contact</li>
</ul>
</td>
</tr>

</table>

</div>

</div>
</body>
</html>
Jun 12 '07 #1
Share this Question
Share on Google+
11 Replies


P: n/a
"Nospam" <no****@home.comwrote in
news:YJ****************@newsfe1-gui.ntli.net:
I don't know what it is I am doing wrong, I am trying to get the menus
to either expand or contract based on their previous states, i.e if
already expanded if clicked again contract, and if contracted, expand,
so far it doesn't work for the about and services link(but works for
the expand all and contract all links), any help would be greatly
appreciated:
its awfully hard to debug your javascript problem if you don't post any
javascript.
Jun 12 '07 #2

P: n/a
The javascript in simpletreemenu is:

var persisteduls=new Object()
var ddtreemenu=new Object()
ddtreemenu.closefolder="/includes/closed.gif" //set image path to "closed"
folder image
ddtreemenu.openfolder="/includes/open.gif" //set image path to "open" folder
image
//////////No need to edit beyond here///////////////////////////
ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
if (typeof persisteduls[treeid]=="undefined")
persisteduls[treeid]=(enablepersist==true &&
ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") :
""
for (var i=0; i<ultags.length; i++)
ddtreemenu.buildSubTree(treeid, ultags[i], i)
if (enablepersist==true){ //if enable persist feature
var durationdays=(typeof persistdays=="undefined")? 1 :
parseInt(persistdays)
ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid,
durationdays)}, "unload") //save opened UL indexes on body unload

}
}
ddtreemenu.buildSubTree=function(treeid, ulelement, index){
ulelement.parentNode.className="submenu"
if (typeof persisteduls[treeid]=="object"){ //if cookie exists
(persisteduls[treeid] is an array versus "" string)
if (ddtreemenu.searcharray(persisteduls[treeid], index)){
ulelement.setAttribute("rel", "open")
ulelement.style.display="block"
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.openfolder+")"

}
else
ulelement.setAttribute("rel", "closed")

} //end cookie persist code
else if (ulelement.getAttribute("rel")==null ||
ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel
attribute explicted added by user
ulelement.setAttribute("rel", "closed")
else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this
UL has an explicit rel value of "open"
ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent
ULs (so the most inner UL is revealed!)
ulelement.parentNode.onclick=function(e){
var submenu=this.getElementsByTagName("ul")[0]
if (submenu.getAttribute("rel")=="closed"){
submenu.style.display="block"
submenu.setAttribute("rel", "open")
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.openfolder+")"

}
else if (submenu.getAttribute("rel")=="open"){
submenu.style.display="none"
submenu.setAttribute("rel", "closed")
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.closefolder+")*
"

}
ddtreemenu.preventpropagate(e)

}
ulelement.onclick=function(e){
ddtreemenu.preventpropagate(e)
}
}
ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element
and any of its parent ULs
var rootnode=document.getElementById(treeid)
var currentnode=ulelement
currentnode.style.display="block"
currentnode.parentNode.style.backgroundImage="url( "+ddtreemenu.openfolder+"*
)
"
while (currentnode!=rootnode){
if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
currentnode.style.display="block"
currentnode.setAttribute("rel", "open") //indicate it's open
currentnode.parentNode.style.backgroundImage="url( "+ddtreemenu.openfolder+"*
)
"

}
currentnode=currentnode.parentNode
}
}
ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL
elements
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
for (var i=0; i<ultags.length; i++){
ultags[i].style.display=(action=="expand")? "block" : "none"
var relvalue=(action=="expand")? "open" : "closed"
ultags[i].setAttribute("rel", relvalue)
ultags[i].parentNode.style.backgroundImage=(action=="expand ")?
"url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"
}
}
ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of
opened ULs relative to other ULs in Tree into cookie
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
var openuls=new Array()
for (var i=0; i<ultags.length; i++){
if (ultags[i].getAttribute("rel")=="open")
openuls[openuls.length]=i //save the index of the opened UL (relative to the
entire list of ULs) as an array element

}
if (openuls.length==0) //if there are no opened ULs to save/persist
openuls[0]="none open" //set array value to string to simply indicate all
ULs should persist with state being closed
ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate
cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the
opened ULs)
}
////A few utility functions below//////////////////////

ddtreemenu.getCookie=function(Name){ //get cookie value
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target
name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""

}
ddtreemenu.setCookie=function(name, value, days){ //set cookei value
var expireDate = new Date()
//set "expstring" to either future or past date, to set or delete cookie,
respectively
var expstring=expireDate.setDate(expireDate.getDate()+ parseInt(days))
document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+";
path=/";
}
ddtreemenu.searcharray=function(thearray, value){ //searches an array for
the entered value. If found, delete value from array
var isfound=false
for (var i=0; i<thearray.length; i++){
if (thearray[i]==value){
isfound=true
thearray.shift() //delete this element from array for efficiency sake
break
}
}
return isfound
}
ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling
upwards
if (typeof e!="undefined")
e.stopPropagation()
else
event.cancelBubble=true
}
ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a
function to execute to an event handler (ie: onunload)
var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
if (target.addEventListener)
target.addEventListener(tasktype, functionref, false)
else if (target.attachEvent)
target.attachEvent(tasktype, functionref)
Jun 16 '07 #3

P: n/a
Nospam said the following on 6/16/2007 3:02 PM:
The javascript in simpletreemenu is:
Is there a question in there anywhere or are you just posting code for
the fun of it?

--
Randy
Chance Favors The Prepared Mind
comp.lang.javascript FAQ - http://jibbering.com/faq/index.html
Javascript Best Practices - http://www.JavascriptToolbox.com/bestpractices/
Jun 16 '07 #4

P: n/a
>Is there a question in there anywhere or are you just posting code for
>the fun of it?
Trying to get a menu to cotnract and expand using a javascript template. I
don't know what it is I am doing wrong, I am trying to get the menus to
either expand or contract based on their previous states, i.e if already
expanded if clicked again contract, and if contracted, expand, so far it
doesn't work for the about and services link(but works for the expand all
and contract all links), any help would be greatly appreciated:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Welcome </title>
<link rel="stylesheet" type="text/css"
href="style.css" />
<script type="text/javascript" src="simpletreemenu.js">
</script>
</head>
<div id="wrapper">

<div id="header">
</div>

<table id="table">
<tr>
<td id="empty"></td>

<td rowspan="2" id="content">
</td>

</tr>

<tr>
<td id="menu">
Sidebar
<h4>Menu</h4>

<a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>

<ul id="treemenu1" class="treeview">
<li>Home</li>
<li><a href="javascript:ddtreemenu.flatten('treemenu1abou t',
'contact')">About</a>
<ul id="treemenu1about">
<li>History</li>
<li>Job opportunities</li>
</ul>
</li>
<li><a href="javascript:ddtreemenu.flatten('treemenu1serv ices',
'contact')">Services</a>
<ul id="treemenu1services">
<li>Virtual assistants</li>
<li>Website design and promotion
<ul>
<li>Website design</li>
<li>Search engine optimisation</li>
<li>Website promotion </li>
<liWebsite hosting</li>
</ul>
</li>

</ul>
</li>

<li>Faq</li>
<li>Contact</li>
</ul>
</td>
</tr>

</table>

</div>

</div>
</body>
</html>

This is the javascript for simpletreemenu:
var persisteduls=new Object()
var ddtreemenu=new Object()
ddtreemenu.closefolder="/includes/closed.gif" //set image path to "closed"
folder image
ddtreemenu.openfolder="/includes/open.gif" //set image path to "open" folder
image
//////////No need to edit beyond here///////////////////////////
ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
if (typeof persisteduls[treeid]=="undefined")
persisteduls[treeid]=(enablepersist==true &&
ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") :
""
for (var i=0; i<ultags.length; i++)
ddtreemenu.buildSubTree(treeid, ultags[i], i)
if (enablepersist==true){ //if enable persist feature
var durationdays=(typeof persistdays=="undefined")? 1 :
parseInt(persistdays)
ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid,
durationdays)}, "unload") //save opened UL indexes on body unload

}
}
ddtreemenu.buildSubTree=function(treeid, ulelement, index){
ulelement.parentNode.className="submenu"
if (typeof persisteduls[treeid]=="object"){ //if cookie exists
(persisteduls[treeid] is an array versus "" string)
if (ddtreemenu.searcharray(persisteduls[treeid], index)){
ulelement.setAttribute("rel", "open")
ulelement.style.display="block"
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.openfolder+")"

}
else
ulelement.setAttribute("rel", "closed")

} //end cookie persist code
else if (ulelement.getAttribute("rel")==null ||
ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel
attribute explicted added by user
ulelement.setAttribute("rel", "closed")
else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this
UL has an explicit rel value of "open"
ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent
ULs (so the most inner UL is revealed!)
ulelement.parentNode.onclick=function(e){
var submenu=this.getElementsByTagName("ul")[0]
if (submenu.getAttribute("rel")=="closed"){
submenu.style.display="block"
submenu.setAttribute("rel", "open")
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.openfolder+")"

}
else if (submenu.getAttribute("rel")=="open"){
submenu.style.display="none"
submenu.setAttribute("rel", "closed")
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.closefolder+")*
"

}
ddtreemenu.preventpropagate(e)

}
ulelement.onclick=function(e){
ddtreemenu.preventpropagate(e)
}
}
ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element
and any of its parent ULs
var rootnode=document.getElementById(treeid)
var currentnode=ulelement
currentnode.style.display="block"
currentnode.parentNode.style.backgroundImage="url( "+ddtreemenu.openfolder+"*
)
"
while (currentnode!=rootnode){
if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
currentnode.style.display="block"
currentnode.setAttribute("rel", "open") //indicate it's open
currentnode.parentNode.style.backgroundImage="url( "+ddtreemenu.openfolder+"*
)
"

}
currentnode=currentnode.parentNode
}
}
ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL
elements
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
for (var i=0; i<ultags.length; i++){
ultags[i].style.display=(action=="expand")? "block" : "none"
var relvalue=(action=="expand")? "open" : "closed"
ultags[i].setAttribute("rel", relvalue)
ultags[i].parentNode.style.backgroundImage=(action=="expand ")?
"url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"
}
}
ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of
opened ULs relative to other ULs in Tree into cookie
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
var openuls=new Array()
for (var i=0; i<ultags.length; i++){
if (ultags[i].getAttribute("rel")=="open")
openuls[openuls.length]=i //save the index of the opened UL (relative to the
entire list of ULs) as an array element

}
if (openuls.length==0) //if there are no opened ULs to save/persist
openuls[0]="none open" //set array value to string to simply indicate all
ULs should persist with state being closed
ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate
cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the
opened ULs)
}
////A few utility functions below//////////////////////

ddtreemenu.getCookie=function(Name){ //get cookie value
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target
name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""

}
ddtreemenu.setCookie=function(name, value, days){ //set cookei value
var expireDate = new Date()
//set "expstring" to either future or past date, to set or delete cookie,
respectively
var expstring=expireDate.setDate(expireDate.getDate()+ parseInt(days))
document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+";
path=/";
}
ddtreemenu.searcharray=function(thearray, value){ //searches an array for
the entered value. If found, delete value from array
var isfound=false
for (var i=0; i<thearray.length; i++){
if (thearray[i]==value){
isfound=true
thearray.shift() //delete this element from array for efficiency sake
break
}
}
return isfound
}
ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling
upwards
if (typeof e!="undefined")
e.stopPropagation()
else
event.cancelBubble=true
}
ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a
function to execute to an event handler (ie: onunload)
var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
if (target.addEventListener)
target.addEventListener(tasktype, functionref, false)
else if (target.attachEvent)
target.attachEvent(tasktype, functionref)

Jun 18 '07 #5

P: n/a
On Jun 18, 8:27 am, "Nospam" <nos...@home.comwrote:
Is there a question in there anywhere or are you just posting code for
the fun of it?

Trying to get a menu to cotnract and expand using a javascript template. I
You are persistent aren't you.
don't know what it is I am doing wrong, I am trying to get the menus to
either expand or contract based on their previous states, i.e if already
expanded if clicked again contract, and if contracted, expand, so far it
doesn't work for the about and services link(but works for the expand all
and contract all links), any help would be greatly appreciated:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Welcome </title>
<link rel="stylesheet" type="text/css"
href="style.css" />
<script type="text/javascript" src="simpletreemenu.js">
</script>
</head>

<div id="wrapper">

<div id="header">
</div>

<table id="table">
<tr>
<td id="empty"></td>

<td rowspan="2" id="content">

</td>

</tr>

<tr>
<td id="menu">
Sidebar
<h4>Menu</h4>

<a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>
A word of advice: if you are going to create anchors with the JS
protocol, you need to create them with script.
>
<ul id="treemenu1" class="treeview">
<li>Home</li>

<li><a href="javascript:ddtreemenu.flatten('treemenu1abou t',
'contact')">About</a>
<ul id="treemenu1about">
<li>History</li>
<li>Job opportunities</li>
</ul>
</li>

<li><a href="javascript:ddtreemenu.flatten('treemenu1serv ices',
'contact')">Services</a>
<ul id="treemenu1services">
<li>Virtual assistants</li>
<li>Website design and promotion
<ul>
<li>Website design</li>
<li>Search engine optimisation</li>
<li>Website promotion </li>
<liWebsite hosting</li>
</ul>
</li>

</ul>
</li>

<li>Faq</li>
<li>Contact</li>
</ul>
</td>
</tr>

</table>

</div>

</div>
</body>
</html>

This is the javascript for simpletreemenu:
So where did you get this thing and why don't you ask the people
responsible for it?
var persisteduls=new Object()
var ddtreemenu=new Object()

ddtreemenu.closefolder="/includes/closed.gif" //set image path to "closed"
folder image
ddtreemenu.openfolder="/includes/open.gif" //set image path to "open" folder
image

//////////No need to edit beyond here///////////////////////////

ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
if (typeof persisteduls[treeid]=="undefined")
persisteduls[treeid]=(enablepersist==true &&
ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") :
""
for (var i=0; i<ultags.length; i++)
ddtreemenu.buildSubTree(treeid, ultags[i], i)
if (enablepersist==true){ //if enable persist feature
var durationdays=(typeof persistdays=="undefined")? 1 :
parseInt(persistdays)
ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid,
durationdays)}, "unload") //save opened UL indexes on body unload

}
}

ddtreemenu.buildSubTree=function(treeid, ulelement, index){
ulelement.parentNode.className="submenu"
if (typeof persisteduls[treeid]=="object"){ //if cookie exists
(persisteduls[treeid] is an array versus "" string)
if (ddtreemenu.searcharray(persisteduls[treeid], index)){
ulelement.setAttribute("rel", "open")
ulelement.style.display="block"
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.openfolder+")"

}

else
ulelement.setAttribute("rel", "closed")

} //end cookie persist code

else if (ulelement.getAttribute("rel")==null ||
ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel
attribute explicted added by user
ulelement.setAttribute("rel", "closed")
else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this
UL has an explicit rel value of "open"
ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent
ULs (so the most inner UL is revealed!)
ulelement.parentNode.onclick=function(e){
var submenu=this.getElementsByTagName("ul")[0]
if (submenu.getAttribute("rel")=="closed"){
submenu.style.display="block"
submenu.setAttribute("rel", "open")
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.openfolder+")"

}

else if (submenu.getAttribute("rel")=="open"){
submenu.style.display="none"
submenu.setAttribute("rel", "closed")
ulelement.parentNode.style.backgroundImage="url("+ ddtreemenu.closefolder+")**
"

}

ddtreemenu.preventpropagate(e)

}

ulelement.onclick=function(e){
ddtreemenu.preventpropagate(e)

}
}

ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element
and any of its parent ULs
var rootnode=document.getElementById(treeid)
var currentnode=ulelement
currentnode.style.display="block"
currentnode.parentNode.style.backgroundImage="url( "+ddtreemenu.openfolder+"**
)
"
while (currentnode!=rootnode){
if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
currentnode.style.display="block"
currentnode.setAttribute("rel", "open") //indicate it's open
currentnode.parentNode.style.backgroundImage="url( "+ddtreemenu.openfolder+"**
)
"

}

currentnode=currentnode.parentNode

}
}

ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL
elements
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
for (var i=0; i<ultags.length; i++){
ultags[i].style.display=(action=="expand")? "block" : "none"
var relvalue=(action=="expand")? "open" : "closed"
ultags[i].setAttribute("rel", relvalue)
ultags[i].parentNode.style.backgroundImage=(action=="expand ")?
"url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"

}
}

ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of
opened ULs relative to other ULs in Tree into cookie
var ultags=document.getElementById(treeid).getElements ByTagName("ul")
var openuls=new Array()
for (var i=0; i<ultags.length; i++){
if (ultags[i].getAttribute("rel")=="open")
openuls[openuls.length]=i //save the index of the opened UL (relative to the
entire list of ULs) as an array element

}

if (openuls.length==0) //if there are no opened ULs to save/persist
openuls[0]="none open" //set array value to string to simply indicate all
ULs should persist with state being closed
ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate
cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the
opened ULs)

}

////A few utility functions below//////////////////////

ddtreemenu.getCookie=function(Name){ //get cookie value
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target
name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""

}

ddtreemenu.setCookie=function(name, value, days){ //set cookei value
var expireDate = new Date()
//set "expstring" to either future or past date, to set or delete cookie,
respectively
var expstring=expireDate.setDate(expireDate.getDate()+ parseInt(days))
document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+";
path=/";

}

ddtreemenu.searcharray=function(thearray, value){ //searches an array for
the entered value. If found, delete value from array
var isfound=false
for (var i=0; i<thearray.length; i++){
if (thearray[i]==value){
isfound=true
thearray.shift() //delete this element from array for efficiency sake
break

}
}
return isfound
}

ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling
upwards
if (typeof e!="undefined")
e.stopPropagation()
else
event.cancelBubble=true

}

ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a
function to execute to an event handler (ie: onunload)
var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
if (target.addEventListener)
target.addEventListener(tasktype, functionref, false)
else if (target.attachEvent)
target.attachEvent(tasktype, functionref)
This blob of script isn't helpful. Again, try the author(s) and be
sure to tell them what the specific problem is.

Jun 20 '07 #6

P: n/a
dm***@cinsoft.net wrote:
><a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>

A word of advice: if you are going to create anchors with the JS
protocol, you need to create them with script.
Explain that. As is, you're wrong.

--
-Lost
Remove the extra words to reply by e-mail. Don't e-mail me. I am
kidding. No I am not.
Jun 20 '07 #7

P: n/a
-Lost said the following on 6/20/2007 12:37 AM:
dm***@cinsoft.net wrote:
>><a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>

A word of advice: if you are going to create anchors with the JS
protocol, you need to create them with script.

Explain that. As is, you're wrong.
Actually, the advice is solid. It is just based on a bad premise. While
it is bad form/error-prone to use the javascript: protocol , it good
advice to suggest creating it with JS. Although, if all you want is the
onclick event, use a button that is created with JS.

--
Randy
Chance Favors The Prepared Mind
comp.lang.javascript FAQ - http://jibbering.com/faq/index.html
Javascript Best Practices - http://www.JavascriptToolbox.com/bestpractices/
Jun 20 '07 #8

P: n/a
Randy Webb wrote:
-Lost said the following on 6/20/2007 12:37 AM:
>dm***@cinsoft.net wrote:
>>><a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>

A word of advice: if you are going to create anchors with the JS
protocol, you need to create them with script.

Explain that. As is, you're wrong.

Actually, the advice is solid. It is just based on a bad premise. While
it is bad form/error-prone to use the javascript: protocol , it good
advice to suggest creating it with JS. Although, if all you want is the
onclick event, use a button that is created with JS.
Oh. Why is that then? I don't understand why the link or the BUTTON
has to be created with JavaScript.

--
-Lost
Remove the extra words to reply by e-mail. Don't e-mail me. I am
kidding. No I am not.
Jun 20 '07 #9

P: n/a
-Lost said the following on 6/20/2007 1:29 AM:
Randy Webb wrote:
>-Lost said the following on 6/20/2007 12:37 AM:
>>dm***@cinsoft.net wrote:
<a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
'contact')">Contract All</a>

A word of advice: if you are going to create anchors with the JS
protocol, you need to create them with script.

Explain that. As is, you're wrong.

Actually, the advice is solid. It is just based on a bad premise.
While it is bad form/error-prone to use the javascript: protocol , it
good advice to suggest creating it with JS. Although, if all you want
is the onclick event, use a button that is created with JS.

Oh. Why is that then? I don't understand why the link or the BUTTON
has to be created with JavaScript.
If the only purpose of a link/button is for the JS crowd, and you create
it with JS, then the non-JS people never see it. The only time it shows
on the page - or even exists - is if it is needed. Perfect degradation :-)

--
Randy
Chance Favors The Prepared Mind
comp.lang.javascript FAQ - http://jibbering.com/faq/index.html
Javascript Best Practices - http://www.JavascriptToolbox.com/bestpractices/
Jun 20 '07 #10

P: n/a
Randy Webb wrote:
-Lost said the following on 6/20/2007 1:29 AM:
>Randy Webb wrote:
>>-Lost said the following on 6/20/2007 12:37 AM:
dm***@cinsoft.net wrote:
><a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand
>All</a| <a href="javascript:ddtreemenu.flatten('treemenu1',
>'contact')">Contract All</a>
>
A word of advice: if you are going to create anchors with the JS
protocol, you need to create them with script.

Explain that. As is, you're wrong.

Actually, the advice is solid. It is just based on a bad premise.
While it is bad form/error-prone to use the javascript: protocol , it
good advice to suggest creating it with JS. Although, if all you want
is the onclick event, use a button that is created with JS.

Oh. Why is that then? I don't understand why the link or the BUTTON
has to be created with JavaScript.

If the only purpose of a link/button is for the JS crowd, and you create
it with JS, then the non-JS people never see it. The only time it shows
on the page - or even exists - is if it is needed. Perfect degradation :-)
Ah, OK. Thanks. That totally eluded me, but now that I see it, it
makes perfect sense.

--
-Lost
Remove the extra words to reply by e-mail. Don't e-mail me. I am
kidding. No I am not.
Jun 20 '07 #11

P: n/a
I still can't find a solution to my problem, the contract and expand menus
don't work on sub menus only on the main contract all, and expand all
javascript, can anyone see anything in the code, or something I am missing
to get it to expand and contract for each sub menus?
Jul 7 '07 #12

This discussion thread is closed

Replies have been disabled for this discussion.