【发布时间】:2017-12-06 20:55:27
【问题描述】:
如何存储输入复选框当前状态的 cookie?每次重新加载页面时,状态都会恢复为默认值(未选中),我一直在嗡嗡作响。我什至使用了一个没有成功的库
https://github.com/js-cookie/js-cookie Cookie.set() 和 Cookie.get() 但没有成功。
我也一直在阅读有关 localStorage JavaScript API 的信息,但似乎无法正常工作。
jQuery 代码:
$(function () {
$('input[type="checkbox"]').click( () => {
if ($(this).is(':checked')) {
$('input[type="checkbox"]').prop('checked', true, localStorage.getItem('checked')).attr('checked', 'checked');
localStorage.setItem('checked', 'checked');
$('img').attr('src', '/full_logo_transparent.png');
$('link#hueman-main-style-css').attr('href', '/darkstyle.min.css');
console.log('Dark Mode enabled');
} else {
$('input[type="checkbox"]').prop('checked', false);
$('link#hueman-main-style-css').attr('href', '/main.min.css');
}
})
});
这是为了记住输入复选框的状态并在页面重新加载时保存它,这样就不必每次都切换它(它会加载额外的 CSS 文件)
我错过了什么吗?顺序正确吗?
该站点是https://itmagazin.info,在右侧您会找到名称为“Noćni Režim”的input:checkbox,它会激活黑暗模式,但点击后它不会保持这种状态在任何文章上。
感谢任何帮助。
【问题讨论】:
-
您只是为那里的输入字段分配了一个点击处理程序 - 您没有做任何其他事情加载时 ...
-
您将
localStorage.getItem('checked')作为第三个参数传递给 JQuery.prop()方法,该方法不接受 3 个参数。并且不需要设置.attr和.prop。 -
CBroe 好的,我需要添加
window.onload()或类似的东西吗?斯科特,我知道.attr不是必需的,我只是在测试一些东西,我需要.prop,否则它不会在DOM中加载添加的CSS文件。 -
“所以我需要添加 window.onload() 或类似的东西吗?” - 不,因为您已经在使用
$(function () {})。您只需要对其中的存储值进行实际做某事,而不仅仅是设置一个等待输入被点击的处理程序... -
CBroe,好的,谢谢您的信息,非常感谢。
标签: javascript jquery cookies