我有以下变量:
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');
所以问题;如何使用本地存储的级别(如果有的话)?
亲切的问候
答案 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
以外的任何其他信息,并使您的默认工作正常。