Keeping Side Nav Open для текущего URL Javascript - PullRequest
1 голос
/ 02 февраля 2020

Я пытался сохранить мой mySidenav открытым, когда пользователь выбирает в mySidenav (), который перенаправляет на новую страницу. После загрузки новой страницы у меня есть отдельный js файл, который имеет готовую (функцию)

$(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>

Есть ли способ указать страницу или, возможно, "текущий" адрес / URL? " и это решило бы проблему или возможно дало бы тегу id id = "mySidenav2" et c.

1 Ответ

2 голосов
/ 02 февраля 2020

Вы можете использовать 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

...