dcsimg
www.webdeveloper.com
Results 1 to 5 of 5

Thread: cookies in show/hide divs

  1. #1
    Join Date
    May 2009
    Posts
    4

    Unhappy cookies in show/hide divs

    This script works fine, but it saves cookies only when the navigator is open. Closing it, the cookies stop to save. How to resolve this?

    HTML Code:
    <html>
    <head>
    <script type="text/javascript">
    function getCookieVal(offset) {
      endstr = document.cookie.indexOf (";", offset)
      if(endstr == -1) endstr = document.cookie.length
      return unescape(document.cookie.substring(offset, endstr))
    }
    
    function GetCookie(name) {
      arg = name + "="
      alen = arg.length
      clen = document.cookie.length
      var i = 0
      while (i < clen) {
        j = i + alen
        if(document.cookie.substring(i, j) == arg) return getCookieVal(j)
        i = document.cookie.indexOf(" ", i) + 1
        if(i == 0) break
      }
      return null
    }
    
    function SetCookie (name, value, per, exp) {
      cstr = name + "=" + escape(value) + ";"
      if(per){
        addtime=(exp>0) ? exp : 31536000000
        expdate = new Date()
        expdate.setTime(expdate.getTime() + addtime)
        expdate = expdate.toGMTString()
       cstr+=" expires=" + expdate
      }
      document.cookie = cstr
    }
    
    function DeleteCookie(name) {
      exp = new Date()
      exp.setTime (exp.getTime() - 1)
      cval = GetCookie(name)
      if(cval != null)
      document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString()
    }
    
    
    
    function setDisplay(div,disp)
    {
      if (disp!=null)
       div.style.display=disp;
    }
    
    function expandCollapse(id)
    {
      var data=id.split(':'); 
      var div = document.getElementById(data[0]);
      if (div.style.display=='none')
      {
        div.style.display='block';
        SetCookie(id,'block');
      }
      else
      {
        div.style.display='none';
        SetCookie(id,'none');
      }
      
      return false;
    }
    
    function setState(pageID)
    {
      var div;
      var i=1;
      while (div=document.getElementById('Div'+(i++))) 
       setDisplay(div,GetCookie(div.id+':'+pageID));
    }
    </script>
    </head>
    <body onload="setState('page1')">
    <p>
    <a href="#" onclick="return expandCollapse('Div1:page1')">Expand/Collapse</a>
    <div id ="Div1" style="display:block;">Div1 content</div>
    </p>
    <p>
    <a href="#" onclick="return expandCollapse('Div2:page1')">Expand/Collapse</a>
    <div id ="Div2" style="display:block;">Div2 content</div>
    </p>
    <p>
    <a href="#" onclick="return expandCollapse('Div3:page1');">Expand/Collapse</a>
    <div id ="Div3" style="display:block;">Div3 content</div>
    </p>
    </body>
    </html>
    thanks...

  2. #2
    Join Date
    Oct 2006
    Posts
    939
    use onbeforeunload="doStuff()" in your body tag

  3. #3
    Join Date
    May 2009
    Posts
    4
    Thank you, justinbarneskin, but it doesn't work... Do you know another way to make the thing happen?

  4. #4
    Join Date
    May 2009
    Posts
    4
    I need it persists after I close and open the navigator again...

    that's what I do:

    HTML Code:
    function SetCookie (name, value, per, exp) {
      cstr = name + "=" + escape(value) + ";"
      if(per){
        addtime=(exp*24*60*60*1000)
        expdate = new Date()
        expdate.setTime(expdate.getTime() + addtime)
        expdate = expdate.toGMTString()
       cstr+=" expires=" + expdate
      }
    and it occasiones no effect...
    do you know what more I can try?

  5. #5
    Join Date
    Oct 2006
    Posts
    939
    SetCookie (name, value, per, exp)

    if you don't have the argument per when calling your function
    exp will move up to be interpreted as per

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles