【问题标题】:How to keep toggle state of side menu如何保持侧边菜单的切换状态
【发布时间】:2019-11-16 12:41:51
【问题描述】:

我需要编辑这个控制滑块菜单的 javascript,以在页面刷新后保持滑块菜单当前切换位置

我在网上搜索了 2 打解决方案,没有结果

我希望菜单在页面刷新后根据当前切换保持打开或关闭,但我不知道如何将正确的代码添加到脚本中

    <script>
function openNav() {
  document.getElementById("mySidenav").style.width = "250px";
    document.body.style.backgroundColor = "rgb(0,0,0)";
}

function closeNav() {
  document.getElementById("mySidenav").style.width = "0";
    document.body.style.backgroundColor = "black";
}
</script>

【问题讨论】:

  • 我认为你应该使用localStorage 来保持状态
  • LocalStorage 或 cookie 来保持状态是最好的方法。

标签: javascript menu toggle side-menu


【解决方案1】:

根据 Cuong le Ngoc 的评论,您可以这样做。此代码应在页面加载时运行:

 var key = "menuState";

    try
    {
        /*Determine if the menu was closed, or if element does not exist in localstorage*/
        var menuOpen = localStorage.getItem(key);
        if (menuOpen === null || menuOpen === 'FALSE')
        {
            closeNav();                  //Close the menu.     
        }
        else
        {
             openNav();                  //Otherwise, the menu was open. Open it.
        }

    }
    catch (ex)
    {
        console.log("Unable to access local storage to update menu state. " +ex.message);
    }

现在在您的openNav()closeNav() 中,您可以看到菜单状态元素的本地存储值。

   function openNav() {
   document.getElementById("mySidenav").style.width = "250px";
   document.body.style.backgroundColor = "rgb(0,0,0)";

   localStorage.setItem(key, 'TRUE');        //Mark menu as open.
   }

  function closeNav() {
    document.getElementById("mySidenav").style.width = "0";
    document.body.style.backgroundColor = "black";

    localStorage.setItem(key, 'FALSE');    //Mark menu as closed.
   }

【讨论】:

  • 我认为这里不需要使用布尔值,字符串就足够了,所以你不需要使用JSON.stringify()
  • @CuongLeNgoc 这是真的。我已经更新了答案,以便将元素作为字符串直接存储和访问,而不必使用 JSON.stringify()JSON.parse()
  • 你们太棒了,我需要了解更多,因为我不知道如何应用它。对于傻瓜,什么是本地主机?
  • @ChazSteiner 通常,localhost 指的是您的本地计算机。如果您使用自己的计算机作为服务器,那么这就是localhost 通常所指的内容。该名称随后被解析为 IPv4 地址 127.0.0.1,称为环回地址。使用 localhost 允许您从服务器本身访问托管在服务器上的某些内容(例如 html 文件)。但请记住,这与localStorage 无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多