我正在用html和JavaScript制作游戏。我使用localStorage在游戏中加入了一个保存系统。当我从电脑上打开html文件时,一切都很顺利。所有东西都保存在localStorage中,一切都完美地加载......但是当我将文件上传到我的网站时,游戏所在的每个值都有NaN ...我知道这意味着不是数字,但我不明白。为什么这可以在我的电脑上运行而不能在我的网站上运行?
这是游戏的保存和加载部分!
Game
我一直在想是因为我无法到达localStorage?请帮助我,我真的需要这个,我一直试图找到答案。
答案 0 :(得分:4)
您的检查以确保您的localStorage值无效:
if(typeof(localStorage.getItem("game_saved_before")) != undefined){
getItem返回null
,typeof(null)
为object
。
因此,您的所有其他来电都可以评估为parseInt(null)
NaN
。
直接修复将是:
if(localStorage.getItem("game_saved_before") !== null){
或:
if(localStorage["game_saved_before"] !== undefined){
或:
if(typeof(localStorage.getItem("game_saved_before")) === "string"){
但是你必须确保localStorage.clear()
摆脱所有属性为" NaN"。
我认为您已经遇到了可以通过版本控制避免的旧配置问题:
var save_format=1; // increment on breaking save format changes
save()
localStorage.setItem("game_saved_before", save_format)
...
load_game()
if(parseInt(localStorage.getItem("game_saved_before")) === save_format){
...
这种方法的一个缺点是你仍在零碎地保存东西,因此一个版本的遗留属性最终可能会与未来的版本共存,除非你使用removeItem
。