Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我有一个代码,它将不同元素的类存储在本地存储中,但其中一个没有存储?知道为什么会这样吗?_Javascript_Jquery_Html_Css_Local Storage - Fatal编程技术网

Javascript 我有一个代码,它将不同元素的类存储在本地存储中,但其中一个没有存储?知道为什么会这样吗?

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) ==

我有一个代码,每次我点击按钮,它都会通过切换类来更改不同元素的背景色,所有这些都存储在localStorage中。但是有一个我的元素类没有存储在localStorage中。我不知道为什么,因为它和其他代码是一样的。这不应该发生。我要添加类的目标元素是“.ps stream”,我存储localStorage的变量是“getFavStreamPost”,下面是代码:

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,该值在那里,但元素返回到其原始颜色。只有当所有要检查的内容都具有适当的值时,代码才会执行某些操作,否则,它不会执行任何操作。所以,你的一个价值观不是你所期望的,所以什么也没有发生。