创建基本的单一JavaScript函数来更改不同的localStorage对象

时间:2012-03-13 02:48:42

标签: javascript variables local-storage

我有一个关于在javascript中使用变量的初学者问题。我不是编程的新手,但我是javascript的新手,似乎有些事情让我很好。我的问题涉及以下javascript代码段:

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行长sooo我希望它不是一个问题。

手头的问题是我将信息存储在localStorage.zero下的localStorage中。我想要做的是将传入的字符串用于更新localStorage数据。这样我就可以传入不同的字符串并使用这个单一函数更新所有内容的信息。

现在它只是给出了一个错误,说明localStorage.xue正如预期的那样是未定义的。

为了澄清我是否传入披萨localStorage.pizza将被修改,或者如果我传入hop localStorage.hop将被修改。

对不起,如果我在散步,但我有点紧张。

谢谢!

1 个答案:

答案 0 :(得分: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引用您传入的内容,例如{ {1}}

在上面的函数中,我尝试通过声明localStorage['pizza']来捕获这个意图。请注意,引号是关闭的,因此它将使用xue的值作为键。

Quirksmode上的这个link也可能会有所帮助,它解释了如何将JS中的对象视为关联数组。

希望这有帮助!