javascript - 使用 setTimeout() 函数从 localStorage 中删除项目

标签 javascript jquery local-storage settimeout

localStorage 中的 userData 项映射到从服务器传递的 JSON 字符串。 我想要做的是每次 PHP session 结束时从 localStorage 中删除此项并将 userId 设置为默认值。

变量.js

var userIdDefault = 1;
var sessionDuration = 1440;

if(localStorage.getItem('userData')) {
    var userDataStored = JSON.parse(localStorage.getItem('userData'));
    var userId = userDataStored["userId"];

    var sessionStartTime = parseInt(userDataStored["sessionStartTime"]);
    var sessionStopTime = sessionStartTime + sessionDuration;
}
else {
    var userId = userIdDefault;
}

main.js

$(document).ready(function() {
    if(userDataStored) {
        var timeNow = Math.floor(new Date().getTime() / 1000);
        waitTime = sessionStopTime - timeNow;

        setTimeout(function() {
            console.log('sessionStartTime: ' + sessionStartTime);
            console.log('waitTime: ' + waitTime);
            console.log('timeNow: ' + timeNow);
            console.log('sessionStopTime: ' + sessionStopTime);
        
            localStorage.removeItem("userId");
            var userId = userIdDefault;
        }, waitTime); 
    }
});

浏览器控制台日志:

1st page reload
main.js: sessionStartTime: 1422232761
main.js: waitTime: 1434 main.js: timeNow: 1422232767
main.js: sessionStopTime: 1422234201

2nd page reload
main.js: sessionStartTime: 1422232761
main.js: waitTime: 1416
main.js: timeNow: 1422232785
main.js: sessionStopTime: 1422234201

userDataStored
Object {userId: "23", login: "login2", firstName: "name", lastName: "name", email: "example@mail.com"...}

userId
"23"

最佳答案

该代码不起作用,因为 localstorage 中没有包含该 key 的数据 用户身份。用户 ID 是您存储在本地存储中的 JSON 对象中的键。

var userDataStored = JSON.parse(localStorage.getItem('userData'));
userDataStored.userId = null;
localStorage.setItem('userData', JSON.stringify(userDataStored ));

关于javascript - 使用 setTimeout() 函数从 localStorage 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28143571/

相关文章:

javascript - 为什么 Firefox 配置文件文件夹中没有 webappsstore.sqlite 文件?

php - 所见即所得的 HTML/CSS 生成器

javascript - TableExport jquery 插件 : Filename and Extension issue

javascript - 基于点击菜单的 HTML5 主页

javascript - 如何防止我的 JavaScript 计时器在页面重新加载时重新启动

jQuery 克隆父元素

javascript - 检查 not null 不使用 localStorage

javascript - $http.get 返回格式错误的数据

javascript - V-model 没有监听输入值的变化(vuejs)

javascript - Jest 测试中 buffer.toString() 上的 .toBeInstanceOf(String)?