javascript - 第一次访问时 - 弹出一个 div 询问用户名,然后将其和日期存储在本地存储中

标签 javascript local-storage

这里的问题是它永远不会进入 else 语句;我已经尝试创建一个标志来检查它何时进入 if 并更改,但它不起作用

var oUser = {};
// This is to add Name to JS
if (!oUser.name) {
    oUser.name = prompt("Enter Name: ") // This is to add Name to JS 
    localStorage.name = oUser.name
    // Now the time
    oUser.date = new Date().toUTCString();
    localStorage.date = oUser.date;
} else {
    var msgDis = document.getElementById('msgDisplay');
    msgDis.innerHTML = "Hi " + localStorage.name + " Welcome back!" + " -->Date: " + localStorage.date;
}

最佳答案

oUser.name 未定义,因此 !oUser.name 将始终通过。您将 oUser 创建为空对象 (var oUser = {};),然后检查您从未定义的数据成员。

您应该检查 localStorage 是否已设置:

// Declare oUser in the global scope, as an empty object
var oUser = {};
// check for browser support of localStorage
if(typeof(localStorage) == 'undefined') {
    // Check failed, alert user
    alert('Your browser does not support the localStorage method!');
} else {
    // wrapping this in a try...catch block, incase cookies are disabled
    try {
        // Attempt to pull oUser (by key) from localStorage, failure results
        // in oUser being an empty object.
        oUser = JSON.parse(localStorage.getItem('oUser'))||{};
        // Now check if oUser.name is NOT set
        if(!oUser.name) {
            // prompt user for a name
            oUser.name = prompt("Enter Name: ");
            // insert current date
            oUser.date = (new Date()).toUTCString();
            // save oUser in localStorage, stringified
            localStorage.setItem('oUser',JSON.stringify(oUser));
        } else {
            // oUser.name was set, welcome them back
            var msgDis = document.getElementById("msgDisplay");
            msgDisplay.innerHTML = "Hi " + oUser.name + " Welcome back! -->Date: " + oUser.date;
        }
    } catch(e) {
        // Cookies are disabled, which threw an error, alert the user
        alert('To use localStorage, you need to enable cookies.');
    }
}

关于javascript - 第一次访问时 - 弹出一个 div 询问用户名,然后将其和日期存储在本地存储中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987094/

相关文章:

javascript - 如何在本地存储中存储和检索许多 JavaScript 原语

javascript - 你如何从 localStorage 调用 url

复选框上的 Javascript 克隆此 div,未选中时删除此 div

javascript - 类型错误 : Cannot read property 'Roboto-Regular.ttf' of undefined

javascript - 如何检测 IE 和 Edge 浏览器?

javascript - 在相同的上下文中复制相同的东西

javascript - 为什么切换到从 require 导入可以修复运行时错误?

jquery - 如何将拖放保存到本地存储?

javascript - Web 开发 : localStorage vs. 缓存 HTTP

javascript - 将背景图像设置为动态 svg 数据?