javascript - 如何正确使用本地存储?

标签 javascript jquery modernizr

编辑:由于我的问题似乎不清楚,我将重新表述我的问题。

我需要:

  • 将变量存储在本地存储中。我有一个按钮可以执行此操作。

  • 检索变量的值,但前提是本地存储中有任何值。如果没有,那么我想设置标准值。

  • 删除本地存储。我还有一个按钮。

在这种情况下我使用以下代码,但变量 scrapMetal 始终返回 true。

Javascript:

//Been to variables
var beenToPrison = true;

//Item variables
var scrapMetal = false;

//Room variables
var currentRoom = 'prison';

//Mission variables
var currentMission = 'breakOut';

//Store
$("#media-icon1").click(function() {
    if (Modernizr.localstorage) {
        localStorage.setItem("curmission", currentMission);
        localStorage.setItem("curroom", currentRoom);
        localStorage.setItem("scrpmtl", scrapMetal);
        localStorage.setItem("beenprison", beenToPrison);
        addText( $('<p>Game saved.<br><br></p>'))
    }
    else {
        addText( $('<p>Browser does not support saving.<br><br></p>'))
    }
    console.log(scrapMetal);
});

//Remove storage
$("#media-icon2").click(function() {
    if (Modernizr.localstorage) {
        localStorage.removeItem('curroom', 'beenprison', 'scrpmtl', 'curmission');
        addText( $('<p>Save erased.<br><br></p>'))
    }
    else {
        addText( $('<p>Browser does not support saving so there is nothing to delete.<br><br></p>'))
    }
    console.log(scrapMetal);
});

//Add a P element to the placeholder in the focus screen
var addText = function(el) {
        el.hide().appendTo('#placeholder').fadeIn(1000);
    }

//Check if browser support local storage using a library
$(document).ready(function() {
    if (Modernizr.localstorage) {
        addText( $('<p>Your browser supports local storage. Game data can be saved by pressing the save button.<br><br></p>'))
        scrapMetal = localStorage.scrpmtl;
        if (scrapMetal === null) {
            scrapMetal = false;
        }
        else {
            scrapMetal = localStorage.scrpmtl;
        }
    }
    else {
      addText( $('<p>Your browser does not support local storage. Your game can not be saved. Please use another browser or update your current browser.<br><br></p>'))
    }
    console.log(scrapMetal);
});

最佳答案

只是想补充一点,在设置之前应将数据转换为 JSON。

localStorage.setItem("scrapMetal", JSON.stringify(false));
JSON.parse(localStorage.getItem("scrapMetal"));

否则您将看到字符串“false”,而不是 bool 值 false。

关于javascript - 如何正确使用本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698032/

相关文章:

jQuery:如何清除 asp.net 的 FileUpload 控件的上下文

conditional - Modernizr.load 已弃用。 Yepnope.js 已弃用。怎么办?

javascript - settimeout 并等待(如果已设置超时)

javascript - NativeScript 创建类似砖石的布局

javascript - webview .canGoBack 显示为错误(红色)

javascript - 占位符的替代品,以便在 Internet Explorer 中工作

javascript - 如何为同一页面上的不同输入和文本区域设置动态字符计数器,每个输入和文本区域的最大长度不同?

jquery - CSS 过渡在 Chrome 中无法正常工作

javascript - Modernizr 测试失败后功能仍然适用

javascript - 在 RequireJS 中包含 Modernizr,并在 head 标签中包含 Modernizr