开发者问题收集

如何附加到 HTML5 localStorage?

2011-10-06
28028

我执行了

localStorage.setItem('oldData', $i("textbox").value);

将键 oldData 的值设置为文本框中的值。

下次在文本框中输入内容时,我想将其附加到已经存在的 oldData

因此,如果我在文本框中输入 apples 然后输入 oranges ,我的 localStorage 键 oldData 应如下所示:

最初:

Key      |   Value
---------------------------
oldData  |  apples

现在:

oldData  |  apples oranges

如何附加? 是否提供了 append 方法?

或者我是否需要先读取数据,在 javascript 中附加,然后写回?

3个回答

没有 append 函数。不过编写一个并不难:

function appendToStorage(name, data){
    var old = localStorage.getItem(name);
    if(old === null) old = "";
    localStorage.setItem(name, old + data);
}

appendToStorage('oldData', $i("textbox").value);

注意:在 localStorage 对象上定义一个 append 函数更有意义。 但是 ,由于 localStorage 有一个 setter ,因此这是不可能的。如果您尝试使用 localStorage.append = ... 定义一个函数, localStorage 对象会将此尝试解释为 “在 Storage 对象中保存一个名为 append 的对象”

Rob W
2011-10-06

这不是一个好的解决方案,但它有效并且具有良好的性能。

localStorage.setItem("fruit", "Apples"); 

localStorage.setItem("fruit", localStorage.getItem("fruit") + "Orange");
Nery Jr
2011-10-06

我在 这里 找到了这个:

interface Storage {
  readonly attribute unsigned long length;
  DOMString? key(unsigned long index);
  getter DOMString getItem(DOMString key);
  setter creator void setItem(DOMString key, DOMString value);
  deleter void removeItem(DOMString key);
  void clear();
};

似乎它只有 getItem、setItem、removeItem、clear、key 和 length。

XCS
2011-10-06