/    Sign up×
Community /Pin to ProfileBookmark

Help with Persistence Cookie

I’m working on a menu that is basically a javascript enabled collapsing tree. It uses a cookie to remember which nav items you have open so that when you go to another page and come back, the ones that were open are still open.

I would like to change the cookie so that it remembers which nav items you had open from page to page, so that whenever you go to a new page the same menu items you just had open are still open.

here is the code:

javascript-

[CODE]<script language=”JavaScript1.2″>

var head=”display:””
img1=new Image()
img1.src=”fold.gif”
img2=new Image()
img2.src=”open.gif”

var ns6=document.getElementById&&!document.all
var ie4=document.all&&navigator.userAgent.indexOf(“Opera”)==-1

function checkcontained(e){
var iscontained=0
cur=ns6? e.target : event.srcElement
i=0
if (cur.id==”foldheader”)
iscontained=1
else
while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
if (cur.id==”foldheader”||cur.id==”foldinglist”){
iscontained=(cur.id==”foldheader”)? 1 : 0
break
}
cur=ns6? cur.parentNode : cur.parentElement
}

if (iscontained){
var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags(“UL”)[0]
if (foldercontent.style.display==”none”){
foldercontent.style.display=””
cur.style.listStyleImage=”url(open.gif)”
}
else{
foldercontent.style.display=”none”
cur.style.listStyleImage=”url(fold.gif)”
}
}
}

if (ie4||ns6)
document.onclick=checkcontained

</script>[/CODE]

HTML-

[CODE]<ul>
<li id=”foldheader”>News</li>
<ul id=”foldinglist” style=”display:none” style=&{head};>
<li><a href=”http://www.cnn.com”>CNN</a></li>
<li><a href=”http://www.abcnews.com”>ABC News</a></li>
<li><a href=”http://www.news.bbc.co.uk”>BBC News</a></li>
</ul>

<li id=”foldheader”>Webmaster</li>
<ul id=”foldinglist” style=”display:none” style=&{head};>
<li><a href=”http://www.dynamicdrive.com”>Dynamic Drive</a></li>
<li><a href=”http://www.javascriptkit.com”>JavaScript Kit</a></li>
<li><a href=”http://www.freewarejava.com”>Freewarejava.com</a></li>
</ul>

<li id=”foldheader”>Nested Example</li>
<ul id=”foldinglist” style=”display:none” style=&{head};>
<li><a href=”http://www.dynamicdrive.com”>outer 1</a></li>
<li><a href=”http://www.dynamicdrive.com”>outer 2</a></li>
<li id=”foldheader”>Nested</li>
<ul id=”foldinglist” style=”display:none” style=&{head};>
<li><a href=”http://www.dynamicdrive.com”>nested 1</a></li>
<li><a href=”http://www.dynamicdrive.com”>nested 2</a></li>
</ul>
<li><a href=”http://www.dynamicdrive.com”>outer 3</a></li>
<li><a href=”http://www.dynamicdrive.com”>outer 4</a></li>
</ul>
</ul>
[/CODE]

Cookie-

[CODE]<script language=”JavaScript1.2″>
<!–

function get_cookie(Name) {
//Get cookie routine by Shelley Powers
var search = Name + “=”
var returnvalue = “”;
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
// if cookie exists
if (offset != -1) {
offset += search.length
// set index of beginning of value
end = document.cookie.indexOf(“;”, offset);
// set index of end of cookie value
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

var foldercontentarray=new Array()
var c=0

if (ns6){
for (i=0;i<document.getElementsByTagName(“UL”).length;i++){
if (document.getElementsByTagName(“UL”)[i].id==”foldinglist”){
foldercontentarray[c]=document.getElementsByTagName(“UL”)[i]
c++
}
}
}

if (get_cookie(window.location.pathname) != ”){
var openresults=get_cookie(window.location.pathname).split(” “)
for (i=0 ; i < openresults.length ; i++){
if (ns6){
foldercontentarray[openresults[i]].style.display=”
foldercontentarray[openresults[i]].previousSibling.previousSibling.style.listStyleImage=”url(open.gif)”
}
else{
foldinglist[openresults[i]].style.display=”
document.all[foldinglist[openresults[i]].sourceIndex -1].style.listStyleImage=”url(open.gif)”
}
}
}

if (ns6||ie4){
var nodelength=ns6? c-1 : foldinglist.length-1
var nodes=new Array(nodelength)
var openones=”
}

function checkit(){
for (i=0 ; i <= nodelength ; i++){
if ((ns6&&foldercontentarray[i].style.display==”)||(ie4&&foldinglist[i].style.display==”))
openones=openones + ” ” + i
}
document.cookie=window.location.pathname+”=”+openones
}

if (ns6||ie4)
window.onunload=checkit
//–>
</script>[/CODE]

to post a comment
JavaScript

1 Comments(s)

Copy linkTweet thisAlerts:
@unurbanauthorJun 15.2005 — *bump*
×

Success!

Help @unurban spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.17,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @nearjob,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,
)...