●●请教一下,如何刷新页面时候仍然能保存展开,收缩菜单的状态
asp.net吧
全部回复
仅看楼主
level 1
ruien 楼主
一共有2个展开和收缩菜单,我试着写了段JS,用COOKIE保存状态,但是状态是保存了,但是貌似是同时操作了,比如,如果我要展开二者之间任何一个菜单,刷新页面后2者无论之前是什么状态都展开了,如果我要是收缩二者之间任何一个菜单,刷新页面后2者无论之前是什么状态都收缩了。下面给出JAVASCRIPT代码:
/*
         * 设置cookie
         */
         function setCookie(objName, objValue, objHours) {
             var str = objName + "=" + escape(objValue);
             if (objHours > 0) {//为0时不设定过期时间,浏览器关闭时cookie自动消失
                 var date = new Date();
                 var ms = objHours * 3600 * 1000;
                 date.setTime(date.getTime() + ms);
                 str += "; expires=" + date.toGMTString();
             }
             document.cookie = str;
         }
        
         /*
         * 获取cookie
         */
         function getCookie(objName) {//获取指定名称的cookie的值
             var arrStr = document.cookie.split("; ");
             for (var i = 0; i < arrStr.length; i++) {
                 var temp = arrStr[i].split("=");
                 if (temp[0] == objName) return unescape(temp[1]);
             }
         }
        
         /*
         * 删除cookie
         */
         function delCookie(sName) {
             var date = new Date();
             date.setTime(date.getTime() - 10000);

2009年11月30日 13点11分 1
level 1
ruien 楼主
             document.cookie = sName + "=a; expires=" + date.toGMTString();
         }
        
         function ShowTableJS() {
             var ul = document.getElementById(' <%=ulDisplay.ClientID%>');
                 if (ul.style.display == "none") {
                     ul.style.display = "";
                     delCookie(ul);
                     setCookie(ul, "1","0");
                 }
                 else {
                     ul.style.display = "none";
                     delCookie(ul);
                     setCookie(ul,"0","0");
                 }
         }
         function ShowTableJS2() {
             var ul2 = document.getElementById(' <%=ulDisplay2.ClientID%>');
             if (ul2.style.display == "none") {
                 ul2.style.display = "";
                 delCookie(ul2);
                 setCookie(ul2,"1","0");
             }
             else {
                 ul2.style.display = "none";
                 delCookie(ul2);
                 setCookie(ul2,"0","0");

2009年11月30日 13点11分 2
level 1
ruien 楼主
             }
         }
         function loadfun() {
             var ul = document.getElementById(' <%=ulDisplay.ClientID%>');
             var ul2 = document.getElementById(' <%=ulDisplay2.ClientID%>');
             if (getCookie(ul) == 1) {
                 ul.style.display = "";
             }
             else {
                 ul.style.display = "none";
             }
             if (getCookie(ul) == 1) {
                 ul2.style.display = "";
             }
             else {
                 ul2.style.display = "none";
             }  
         }
     </script>
<script type="text/javascript">
     loadfun();
</script>
   <ul>
   <li style="width: 155px">
     <img src="..." onclick="ShowTableJs();"id="imgJia" /> <a href="...">菜单 </a>
   </li>                          
   </ul>
   <ul id="ulDisplay" runat="server">
       <li>展开菜单1 </li>
       <li>展开菜单2 </li>
   </ul>
   <ul>
   <li style="width: 155px">
     <img src="..." onclick="ShowTableJs2();"id="imgJia" /> <a href="...">菜单2 </a>
   </li>                          
   </ul>
   <ul id="ulDisplay2" runat="server">
       <li>展开菜单1 </li>
       <li>展开菜单2 </li>
   </ul>
2009年11月30日 13点11分 3
level 1
这样的话,用框架啦
2009年11月30日 15点11分 4
level 1
2013年05月24日 06点05分 5
level 1
可以使用cookie 试试这个 http://www.mb5u.com/jscode/45218/
2015年09月06日 08点09分 6
1