2012-03-13 50 views
0

我有一个关于在javascript中使用变量的初学者问题。我对编程并不陌生,但我对JavaScript很陌生,有几件事情似乎吸引了我。我的问题涉及以下JavaScript片段:创建基本的单个JavaScript函数来更改不同的localStorage对象

function use(xue) { 
    if(xue=='zero') { 
    alert(localStorage.xue) 
    if(Number(localStorage.xue) <= 0) { 
     alert("Out of that level spell!"); 
     return false; 
    } 
    localStorage.zero = Number(localStorage.zero)-1; 
    updateGUI(); 
    } 
} 

对不起,使用外部网站,但我想不出如何正确格式化。反正它只有13行,所以我希望这不是问题。

眼下的问题是,我存储localStorage.zero下localStorage的信息。我想要做的是将正在传入的字符串用于更新localStorage数据。这样我就可以传递不同的字符串,并让这个函数更新所有信息。

现在它只是给我一个错误说localStorage.xue,符合市场预期,是不确定的。

为了澄清,如果我传递比萨饼localStorage.pizza将被修改,或者如果我通过跳localStorage.hop将被修改。

很抱歉,如果我散漫,但我一点点紧张。

谢谢!

回答

0

看看定义为localStorage的here(它是Web存储W3草案,所以可以实现浏览器之间会发生变化)和Mozilla的指导here

你也许可以做这样的事情来实现你想要的行为:

function use(xue) { 
    localStorage.setItem(xue, xue); 

    if(Number(localStorage[xue]) <= 0) { 
     alert("Out of that item!"); 
     return false; 
    } else { 
     //You might want to put some more logic here: 
     //maybe a check with default value for localStorage.zero like 
     //if(localStorage["zero"] !== undefined && localStorage["zero"] !== null)... 

     localStorage.zero = Number(localStorage.zero)-1; 
     updateGui(); 
    } 
}; 

我想在您的功能目前是越来越挂了是localStorage.xue相当于localStorage['xue'],但你的意图可能是有localStorage.xue是指无论你在过去,像localStorage['pizza']

在我的功能上面,我试图通过声明localStorage[xue]捕捉到了这个意图。请注意,引号是关闭的,所以它将使用xue的值作为键。

link上怪异模式也可以帮助,它解释了如何在JS对象可以作为关联数组进行查看。

希望这会有所帮助!

+0

谢谢!我认为localStorage看起来像一本字典......它工作! – Cait 2012-03-13 03:29:29

+0

太棒了,很高兴这工作!你能否将我的答案标记为已接受?谢谢 – mrdc 2012-03-13 03:59:28

相关问题