使用 js and/or cookie 保存切换的 class 状态?

Save toggled class state using js and/or cookies?

我在我的网站底部固定了一个横幅,默认打开以显示重要信息,我还有一个按钮,如果用户已阅读通知并想隐藏它,可以将其关闭。

这是我的js:

$(document).ready(function(){
    const   noticeToggle = document.querySelector('.notice__toggle'),
            notice = document.querySelector('.notice')

    noticeToggle.addEventListener('click', _ => {
        noticeToggle.classList.toggle('notice__toggle--toggled');
        notice.classList.toggle('notice--toggled');
    })
});

有没有一种方法可以在用户访问网站时使用 js、cookie 或其他方式来保存此切换状态?目前它仅在浏览不同页面时默认打开(如预期)。

您可以使用 localStorage 存储标志以确定横幅的状态,如下所示:

document.addEventListener('DOMContentLoaded', () => {
  const noticeToggle = document.querySelector('.notice__toggle'),
    notice = document.querySelector('.notice')
    
  if (!!localStorage.getItem('bannerDismissed')) {
    notice.classList.add('notice--toggled'); // remove the banner
  }

  noticeToggle.addEventListener('click', _ => {
    noticeToggle.classList.toggle('notice__toggle--toggled');
    notice.classList.toggle('notice--toggled');
    localStorage.setItem('bannerDismissed', 'true');
  })
});

请注意,我删除了示例代码中对 jQuery 的依赖,因为它只用于文档加载事件处理程序。

只需像 localStorage.setItem('mySwithState', 'active') 一样保存您的开关状态 并在页面加载时获取它 localStorage.getItem('mySwithState');

您可以为此使用 localStorage。

// write
window.localStorage.hasReadYourInfoBox = true;

// read
const hasReadInfoBox = !!window.localStorage.hasReadYourInfoBox