首页 > 解决方案 > 将第二个变量传递给 localStorage

问题描述

我无法将第二个变量传递给 LocalStorage。

在第一页上,我有 2 个 div,在单击每个 div 后,我想传递各种变量:

 $(".questionAnswerItem8447").click(function (val) {
    localStorage.setItem('kasaVisible', val);
 });

$(".questionAnswerItem8448").click(function (va2) {
    localStorage.setItem('autaVisible', va2);
});

然后,在第二页,我想引用这些变量。

 if (localStorage.getItem('kasaVisible')) {
    kasaNagrody.classList.add('activeContainer');
    autaNagrody.classList.add('noActiveContainer');
     console.log('kasa works');

} else if (localStorage.getItem('autaVisible')) {
    kasaNagrody.classList.add('noActiveContainer');
    autaNagrody.classList.add('activeContainer');
    console.log('auto works');
}

不幸的是,无论我在第一页单击哪个 div,第二个总是显示来自第一个的消息 if

console.log('kasa works');

就好像他根本没有看到一样:

 localStorage.setItem('autaVisible', va2);

为什么?

标签: javascriptjquerylocal-storage

解决方案


您正在if else语句中运行代码。

因此,如果您在某个时候单击了第一个 div,那么您已经为本地存储中的第一个 div 设置了值。因此,它将命中 if 语句并且localStorage.getItem('kasaVisible')为真。if 块中的代码将运行,您的代码将永远不会命中该else if块。

尝试使用 2 if 语句代替:

if (localStorage.getItem('kasaVisible')) {
    kasaNagrody.classList.add('activeContainer');
    autaNagrody.classList.add('noActiveContainer');
     console.log('kasa works');

}
if (localStorage.getItem('autaVisible')) {
    kasaNagrody.classList.add('noActiveContainer');
    autaNagrody.classList.add('activeContainer');
    console.log('auto works');
}

localStorage.removeItem(item) 或者,如果单击了第二个 div(如果这是您想要的行为),您可以查看清除第一个值。

注意:您可以在 chrome 开发工具中查看您的 localStorage。打开 devtools > 应用程序 > 存储 > 本地存储


推荐阅读