Javascript SideBar 在页面更改时保持打开状态

标签 javascript local-storage

我创建了一个边栏,它通过一个简单的 javascript 开关打开,如果用户打开了边栏,我想在页面更改期间保持打开状态。

当点击 openMenu 按钮时,它运行切换功能。

HTML:

<h2 onclick="toggleSidebar()"><a href="#">Table of
                    Contents</a></h2>

<nav id="sidenav">
    <div id="top-sidenav">
        <a href="javascript:void(0)" class="closebtn" onclick="toggleSidebar()">Table of Contents
            &ThickSpace;&times;</a>
    </div>
    <ul class="subnav">
        <li>
            <a href="chapter/1.html">Chapter 1
                <p>Down the Rabbit-Hole</p>
            </a>

        </li>
        ...
    </ul>
</nav>

JavaScript:

function toggleSidebar() {
    document.getElementById("sidenav").classList.toggle("active");
    document.getElementById("main").classList.toggle("sideNavActive");
    document.getElementById("buttonHomepage").classList.toggle("sideNavTopBar");
    document.getElementById("prevChapter").classList.toggle("sideNavActive");

}

最佳答案

方法如下,

在您的正文或文档中准备好按照下面的方式实现,

HTML

<body onload=loadMenu()>

document.addEventListener('DOMContentLoaded', (event) => {
  loadMenu()
})

或者 - 如果你有 jQuery

$(document).ready(function() {
     loadMenu();
});

脚本

function loadMenu() {
    if(getLocalStorage("openMenu") == "true") {
        toggleSidebar() 
    }
}

function toggleSidebar() {
    document.getElementById("sidenav").classList.toggle("active");
    document.getElementById("main").classList.toggle("sideNavActive");
    document.getElementById("buttonHomepage").classList.toggle("sideNavTopBar");
    document.getElementById("prevChapter").classList.toggle("sideNavActive");
/*for toggle the menu on localstorage*/
    (getLocalStorage("openMenu") == "true" ? setLocalStorage("openMenu", false) : setLocalStorage("openMenu", true)); //wil toggle and trigger menu when modal opened
}

function setLocalStorage(key, value) {
    if(typeof(Storage) !== "undefined")
    { 
        window.localStorage.setItem(key, value);  
    }
}

function getLocalStorage(key) {
    if(typeof(Storage) !== "undefined")
    {
       return window.localStorage.getItem(key)
    }
}

关于Javascript SideBar 在页面更改时保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766802/

相关文章:

redux - 如何创建具有本地数据存储的 Redux Store?

javascript - 如何在客户网站上开设第三方 localStorage 商店?

javascript - VueJS 从根 Vue 实例中的组件访问数据

javascript - 如何同步 chrome 扩展选项

javascript - 迭代数值并作为 Prop 发送

javascript - 将 php 和 python 中的 RegEx 语法转换为 JS

javascript - 我如何在 d3 v3 中实现 Brush.move

ios - 关闭电源后 HTML5 LocalStorage 在 iOS 上不持久

javascript - 输入类型正则表达式中仅允许数字。问题是我能够输入 this(1.) ,想要阻止它

javascript - Appium - 滚动到一个不起作用的按钮