1

当用户选择重新定向到新页面的 mySidenav() 时,我一直试图让 mySidenav 保持打开状态。加载新页面后,我有一个单独的 js 文件,该文件具有 ready(function)

$(document).ready(function(){
document.getElementById("myMainNav").classList.add('sideNavOpen');
document.getElementById("main").classList.add('lmarg250');
document.getElementById("mySidenav"+num).classList.add('sideNavOpen');
document.getElementById("main").classList.add('lmarg500');
let span = document.getElementById("open");
    if (span.innerHTML === String.fromCharCode(9776).concat(" Open") )
      span.innerText = String.fromCharCode(9776);
    else
      span.innerText = String.fromCharCode(9776).concat(" Open");


});

上面的代码保持 myMainNav 打开,但不保持 mySidenav 打开。我假设由于它不知道 +num 是什么值,因为页面的 html 链接没有指定它:

<div id="mySidenav2" class="sub-sidenav">
        <a onclick="closeSubNavs()" href="javascript:void(0)" class="closebtn2">&times;</a>
        <a href="soup.html">Soup</a>
        <a href="garlicbread.html">Garlic Bread</a>
        <a href="frenchfries.html">French Fries</a>
        <a href="loaded.html">Loaded Fries</a>
        <a href="ques.html">Quesadilla</a>
        <a href="nachos.html">Nachos</a>
        <a href="pbagel.html">Pizza Bagel</a>
      </div>

有没有办法指定页面或“当前地址/网址”?这会解决问题还是给标签一个 id="mySidenav2" 等的 id。

4

1 回答 1

2

您可以使用window.location.pathname提取当前页面并根据逻辑决定是否应打开侧边栏。

就像是:

if(window.location.path === "/garlicbread.html"){
  document.getElementById("mySidenav"+2).classList.add('sideNavOpen');

}

一个更简单的方法可能只是将 num 值存储在localStorage对象中并从那里检索它。

// at load:
let num = window.localStorage.getItem('num');

// When saving:
window.localStorage.setItem('num', num);

文档-window.location - window.localStorage

于 2020-02-02T14:44:40.893 回答