【问题标题】:JavaScript's localStorage doesn't keep valueJavaScript 的 localStorage 不保值
【发布时间】:2016-04-26 23:02:07
【问题描述】:

我有:

var setFileName = function(argFileName)
{
    localStorage.fileName = argFileName;
    fileNameElem.value = localStorage.fileName;
};

var getFileName = function()
{
    return localStorage.fileName ? localStorage.fileName : getDefaultFileName();
};

setFileName() 有效,因为fileNameElem 包含argFileName。但每当我打电话给getFileName() 它总是返回getDefaultFileName()

这是为什么呢?

【问题讨论】:

  • 我看不到直接的问题,但是 FWIW 你的三元运算符可以替换为return localStorage.fileName || getDefaultFileName()
  • @Alnitak。好的,我改变它
  • 您的代码对我有用。你用的是什么浏览器?

标签: javascript local-storage


【解决方案1】:

你应该使用这个语法

存储使用

localStorage.setItem('fileName', value);

从本地存储中获取

localStorage.getItem('filename');

用 jsfiddle 编辑,以防万一你想看看。

https://jsfiddle.net/fo38uo9t/1/

【讨论】:

  • 根据W3C specification,使用属性访问器从localStorage 读写是完全合法的。唯一的例外是当想要存储碰巧与真实属性(或通过localStorage 对象的原型链继承的属性)共享名称的属性时
  • @Alnitak 我把它改成了“你应该使用”。出于某种原因,我只是认为语法无效。无论如何,使用 set & get 似乎更安全,对吧?
  • 也许更安全,但几乎可以肯定不是 OP 问题的原因。
  • 我在 Chrome 中查看 localStorage 的内容。首先它显示分配的值,然后很快变为getDefaultFileName()
  • @mirsadhalilovic 这意味着您有一些其他代码覆盖它,并且这个答案实际上并没有解决您的问题
猜你喜欢
  • 2014-01-27
  • 1970-01-01
  • 2021-04-12
  • 2021-03-19
  • 2016-06-05
  • 2019-02-28
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多