Javascript 我有一个代码,它将不同元素的类存储在本地存储中,但其中一个没有存储?知道为什么会这样吗?
我有一个代码,每次我点击按钮,它都会通过切换类来更改不同元素的背景色,所有这些都存储在localStorage中。但是有一个我的元素类没有存储在localStorage中。我不知道为什么,因为它和其他代码是一样的。这不应该发生。我要添加类的目标元素是“.ps stream”,我存储localStorage的变量是“getFavStreamPost”,下面是代码:Javascript 我有一个代码,它将不同元素的类存储在本地存储中,但其中一个没有存储?知道为什么会这样吗?,javascript,jquery,html,css,local-storage,Javascript,Jquery,Html,Css,Local Storage,我有一个代码,每次我点击按钮,它都会通过切换类来更改不同元素的背景色,所有这些都存储在localStorage中。但是有一个我的元素类没有存储在localStorage中。我不知道为什么,因为它和其他代码是一样的。这不应该发生。我要添加类的目标元素是“.ps stream”,我存储localStorage的变量是“getFavStreamPost”,下面是代码: jQuery(document).ready(function($) { if (typeof(localStorage) ==
jQuery(document).ready(function($) {
if (typeof(localStorage) == 'undefined') {
alert("Your browser does not support HTML5 localStorage. Try upgrading.")
} else {
if (localStorage.getItem("fav") != null && localStorage.getItem("toolbar") != null &&
localStorage.getItem("makePost") != null && localStorage.getItem("typeOfPost") != null &&
localStorage.getItem('streamFilter') != null && localStorage.getItem('streamPost') != null) {
getFav = localStorage.fav;
getFavTool = localStorage.toolbar;
getFavMakePost = localStorage.makePost;
getFavPostType = localStorage.typeOfPost;
getFavStreamFilter = localStorage.streamFilter;
getFavStreamPost = localStorage.streamPost;
$(".widget--box").addClass('widget-darkmode');
$(".ps-toolbar").addClass('toolbar-darkMode');
$(".ps-postbox-content").addClass('postBox');
$(".ps-postbox-tab").addClass('post-type');
$(".ps-stream__filters").addClass('darkStreamFilter');
$(".ps-stream").addClass('activityPost');
}
}
button.on('click', function() {
getFav = localStorage.fav;
getFavTool = localStorage.toolbar;
getFavMakePost = localStorage.makePost;
getFavPostType = localStorage.typeOfPost;
getFavStreamFilter = localStorage.streamFilter;
getFavStreamPost = localStorage.streamPost;
$(".widget--box").toggleClass('widget-darkmode');
$(".ps-toolbar").toggleClass('toolbar-darkMode');
$(".ps-postbox-content").toggleClass('postBox');
$(".ps-postbox-tab").toggleClass('post-type');
$(".ps-stream__filters").toggleClass('darkStreamFilter');
$(".ps-stream").toggleClass('activityPost');
if ($(".widget--box").hasClass('widget-darkmode') && $(".ps-toolbar").hasClass('toolbar-darkMode') &&
$(".ps-postbox-content").hasClass('postBox') && $(".ps-postbox-tab").hasClass('post-type') &&
$(".ps-stream__filters").hasClass('darkStreamFilter') && $(".ps-stream").hasClass('activityPost')) {
localStorage.setItem('fav', 'widget-darkmode');
localStorage.setItem('toolbar', 'toolbar-darkMode');
localStorage.setItem('makePost', 'postBox');
localStorage.setItem('typeOfPost', 'post-type');
localStorage.setItem('streamFilter', 'darkStreamFilter');
localStorage.setItem('streamPost', 'activityPost');
} else {
localStorage.removeItem('fav');
localStorage.removeItem('toolbar');
localStorage.removeItem('makePost');
localStorage.removeItem('typeOfPost');
localStorage.removeItem('streamFilter');
localStorage.removeItem('streamPost');
}
});
}); // document ready
知道为什么存储其余元素而不是此元素或任何其他附加元素吗。有什么方法可以克服这个问题吗?当所有元素都具有适当的类时,代码只在localStorage中设置数据;要么全力以赴,要么一事无成
最好在localStorage中存储一个
darkMode
值,并在此基础上设置所有类。更新:我找到了问题的解决方案。问题不在于代码无法将值保存在本地存储中,而是在该脚本之后运行了另一个脚本,因此它所说的是原始值,而不是本地存储中的值。因此,我必须确保我的脚本最后运行。当您说它“未存储在本地存储中”时,您具体是如何验证它的?在浏览器的调试工具中,查看本地存储数据。有价值吗?调用localStorage.setItem('streamPost','activityPost')代码>,根本不向本地存储添加任何内容?不要只看所有的代码,调试失败的特定操作。如果这一行代码没有在本地存储中存储任何内容,那么就是出了很大的问题。我在单击按钮后检查了本地存储,并且值就在那里。看到的是key:streamPost,value:activityPost,然后我刷新了页面,该值仍然存在,但是该元素的颜色消失了,而其余元素仍然存在。然后是继续调试的时候了。您已经确认,与问题中的假设相反,该值确实正在被存储。那么,整个过程失败在哪里呢?当你加载页面和“颜色消失”时,你在哪里设置颜色?完全调试该操作。您浏览器的调试工具有一个脚本调试器来帮助您完成这项工作。在尝试设置颜色的位置放置断点。页面加载时是否已到达该行代码?变量是否具有您期望的值?等等,我试图从另一个元素中存储另一个值,但仍然不起作用。我不明白为什么会发生这种情况,因为我在刷新页面后检查了localStorage,该值在那里,但元素返回到其原始颜色。只有当所有要检查的内容都具有适当的值时,代码才会执行某些操作,否则,它不会执行任何操作。所以,你的一个价值观不是你所期望的,所以什么也没有发生。