2010-06-18 156 views
1

我有这个显示/隐藏菜单。 它可能是这个菜单使内存?(我打开子菜单,刷新页面,这个子菜单STIL开放。)javascript显示/隐藏内存

<script type="text/javascript"> 
function change(id){ 
    ID = document.getElementById(id); 

    if(ID.style.display == "") 
      ID.style.display = "none"; 
    else 
      ID.style.display = ""; 
     } 
</script> 
    <div onclick="change(5)" style="cursor: hand"> 
     <a href = "#">+</a>News 
    </div> 
    <div style="display: none" id="5"> 
     News1<br/> 
     News2<br/> 
    </div> 

回答

1

简短的回答:饼干。

长答案:我建议你不要尝试它,除非它真的很重要。饼干相当复杂。但是,假设您只想存储一个值,则可以将其简化。

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

然后,你可以这样做:

下面有两个用于设置和Quirksmode读取Cookie,如果你一定要很好的功能

<script type="text/javascript"> 
function change(id){ 
    ID = document.getElementById(id); 

    if(ID.style.display == "") 
      ID.style.display = "none"; 
    else 
      ID.style.display = ""; 
      createCookie("id",id,7); /* 1 week */ 
     } 

window.onload = function() { 
    try{change(readCookie("id"));}catch(e){} //rough example 
}; 
</script> 
    <div onclick="change(5)" style="cursor: hand"> 
     <a href = "#">+</a>News 
    </div> 
    <div style="display: none" id="5"> 
     News1<br/> 
     News2<br/> 
    </div> 
+0

非常感谢,但如何在cookie中投入更多值?例如,我有新闻,文章,照片。现在只刷新一个节目后。 – user319854 2010-06-18 09:44:32

+0

使用'createCookie()'函数。例如,'createCookie(“news”,news,7)'(新闻是新闻部分显示的区块)。 'createCookie(“articles”,articles,7)',等等。然后只需添加相应的readCookie编码。 – tcooc 2010-06-19 03:05:47

0

当然您也可以使用AJAX发送到PHP页面调用(或任何你正在使用的语言),并让它为该用户存储会话。然后,当页面加载时,检查这些会话变量以查看它们是否打开并使它们以这种方式开始。海事组织,额外的编码是不值得记住他们已经打开的菜单。如果某些链接对该页面很重要,则应始终可见。否则,如果它们在页面重新加载时折叠,则无关紧要。

0

你可以通过你设置的cookie来做到这一点,只要用户点击。 window.load()将需要读取cookie和配置当然