如何在我的变量中使用本地存储值?

时间:2013-12-01 23:07:50

标签: javascript html5 local-storage

我有以下变量:

var board = {
    mainBoard: null,
    level: 'easy', // <- this one needs te be set using local storage
    cells: {},
    },
//etc

此处级别预设为easy。现在我想从本地存储中获取此信息。如果没有使用本地存储设置/保存,则应将级别设置为easy。否则使用本地存储中保存的级别。

但是怎么做?

我尝试过:

首先得到变量级别(我不认为这是错误的?):

var level = {
    if (localStorage.length != 0) {
        level = localStorage.getItem('gamelevel');
    } else {
        level = 'easy';
    }
;}

但我无法使其工作,因此本地存储的级别用于此问题顶部的变量中。这样做的正确方法是什么?

更多信息: 我设置了这样的关卡项(这个有效):

localStorage.setItem('gamelevel', board.level);

我得到它:

localStorage.getItem('gamelevel');

所以问题;如何使用本地存储的级别(如果有的话)?

亲切的问候

2 个答案:

答案 0 :(得分:1)

将访问者和修饰符分解为函数,即:

function SetLevel(level) {
    localStorage.setItem('gamelevel', board.level);
}

function GetLevel() {
    if (localStorage.length != 0) {
        level = localStorage.getItem('gamelevel');
    } else {
        level = 'easy';
    }
}

答案 1 :(得分:1)

如果您只是访问localStorage一次,那么在加载时(正如您应该的那样 - 反复查询它是一个相对昂贵的功能),同时您正在建立您的板变量,您可以在对象中完成所有操作字面:

var board = {
    mainBoard: null,
    level: localStorage.getItem( 'gamelevel' ) || 'easy',
    cells: {},
},
如果查询了尚未设置的任何项目,则

localStorage.getItem会返回null - 因此,如果已设置,则board.level将等于所检索的任何值,如果它已经设置了设置完成后,null返回会移至logical OR (||) - handy for setting default values之后的值。

使用localStorage.length也会阻止您存储gamelevel以外的任何其他信息,并使您的默认工作正常。