javascript - 带有复选框的 Javascript localStorage 联系人
问题描述
我有一个设置面板,上面有一个复选框,负责关闭自动主题更改。第一个问题是该复选框不允许更改(我看到触发了一个功能)。第二个问题是我希望在每次重新加载时返回值(真或假)并设置为复选框。如何解决这个问题?
TimeSch(localStorage.getItem("'TimeSch'"));
function TimeSch(a) {
if (a) {
document.getElementById('TimeSch').checked = 'true';
console.log('True start');
Set('TimeSch', true);
$('#theme').prop('disabled', true);
const hours = new Date().getHours();
const isDayTime = hours > 6 && hours < 20;
if (isDayTime) {
theme('White');
console.log('Auto White');
} else {
theme('Dark');
console.log('Auto Dark');
}
} else {
document.getElementById('TimeSch').checked = 'false';
console.log('False start');
$('#theme').prop('disabled', false);
Set('TimeSch', false);
}
}
function Set(name, value) {
if (typeof Storage !== "undefined") {
localStorage.setItem("'" + name + "'", value);
} else {
console.log('No localStorage supported. Oh, please chage your browser!');
}
}
解决方案
您的代码段存在多个问题:
theme()
该功能没有实现input[type="checkbox"]
在select
元素内部,这是无效标记,它们同时被启用/禁用- css for
input[type=checkbox]:after
不考虑复选框的状态,所以它总是只显示x
- 设置不需要的元素的属性
jQuery
- 通过JS检查复选框,你应该给它
Boolean
,而不是字符串 - 你为什么要这样做:
localStorage.setItem("'" + name + "'", ...
?考虑使用:localStorage.setItem(name, ...
直接
目前尚不清楚您要达到的总体目标,但我做了一些补丁,至少它变得有些活跃:https ://codepen.io/anon/pen/OdQEvr
推荐阅读
- java - 'java.lang.ArrayIndexOutOfBoundsException:Index 10 out of bounds for length 10' 错误?
- c++ - 如何快速检查瓷砖网格中的元素是否在我的视口中?
- bash - 在后台运行时杀死进程的bash脚本
- python - 如何使此命令显示机器人正在服务的用户数量?
- python - 使用 python (pandas?) 对新数据进行重复排序
- php - 喜欢和不喜欢系统数据库和查询问题?
- javascript - 在我的网页上在小屏幕上运行另一个 .html 页面
- python - 更改 Pandas 中列的值
- php - Imagemagick 从 6.9 升级到 7 后反转颜色
- hive - 如何向这个 hive 命令添加一个表?