【问题标题】:sessionStorage deletes itself after reloadsessionStorage 重新加载后自行删除
【发布时间】:2021-04-24 17:04:14
【问题描述】:

我对以下代码有疑问:

 "use strict";

let green = "green";
let gold = "gold";
let orange = "orange";

let colors = ["green", "gold", "orange"];
let index = sessionStorage.getItem("color");

if(index == null) {
    index = 0;
}

let button = document.getElementById("click");
button.addEventListener("click", function() {
    console.log(index)
    document.body.style.backgroundColor = colors[index];
    index++;
    sessionStorage.setItem("color", index);
});

当我刷新页面时,为什么颜色会重置?

【问题讨论】:

    标签: javascript session session-storage


    【解决方案1】:

    在点击事件之前添加document.body.style.backgroundColor,因此在初始页面加载时它将选择初始index0并应用相应的颜色。然后,当单击按钮时,index 值会增加并应用新颜色。

    在后续刷新更新后,index 值将从 sessionStorage 中使用。

    let green = "green";
    let gold = "gold";
    let orange = "orange";
    
    let colors = ["green", "gold", "orange"];
    let index = sessionStorage.getItem("color");
    
    if (index == null) {
        index = 0;
    }
    
    document.body.style.backgroundColor = colors[index];
    
    let button = document.getElementById("click");
    button.addEventListener("click", function() {
        console.log(index)  
        document.body.style.backgroundColor = colors[index];
        index++;
        sessionStorage.setItem("color", index);
    });
    

    【讨论】:

      【解决方案2】:

      存储在刷新时重置的原因是因为您正在使用会话存储。尝试保持刷新时应使用本地存储。

      myStorage = window.localStorage;

      然后

      myStorage.getItem() or myStorage.setItem()

      只需以与使用会话存储相同的方式使用它,就可以了!更多信息可以在 Mozilla 开发者文档中找到,https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

      【讨论】:

      • sessionStorage 不会在页面刷新时重置。页面会话结束时,即页面关闭时,数据会被清除。
      • @ZamAbdulVahid 对不起,你完全正确!我不知道我在想什么。我现在将尝试通过复制代码来帮助 OP。
      • 会话存储在页面重新加载和恢复后仍然存在。你错了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多