javascript - 将第二个变量传递给 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);
为什么?
解决方案
您正在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 > 应用程序 > 存储 > 本地存储
推荐阅读
- java - does it make sense to have a junit test case for user registration?
- c++ - 给 QML 一个 QSharedPointer
或 std::unique_ptr ? - html - 代码标签显示 XML 标记然后在 Chrome 中消失
- ios - SnapKit 和 Dynamic UITableViewCell 布局不正确
- r - 由于非英文字符,dir + file.copy 返回“文件不存在”警告,我该如何解决?
- r - 如何在会话之间方便地移动对象
- java - 在 Java 中使用泛型/模式进行对象映射
- javascript - 在循环中执行异步函数
- typescript - 如何在 Typescript 中通用地转换函数的返回类型?
- java - 使用 TCPIP 流套接字,试图让用 Python 编写的服务器从用 Java 编写的客户端读取数据