【问题标题】:HTML 5 Local Storage - deleting after refreshHTML5 本地存储 - 刷新后删除
【发布时间】:2015-04-28 05:33:45
【问题描述】:

我是 javascript、html5 和 jquery 的初学者,我正在尝试在我正在设计的应用程序中首次使用语言环境存储。但是,一旦我将“getIncomeArray”函数添加到我的代码中,本地存储将在我刷新后被删除...... fiddle

function getIncomeArray(){

  //get or create storage arrays
  var incomeArray = localStorage.getItem["incomeArray"];
  console.log(incomeArray);
  if (!incomeArray) {

    incomeArray = [];
    localStorage.setItem("incomeArray", JSON.stringify(incomeArray));
    //code
    console.log("there is no array so I made one");
  }
  else{
    incomeArray = JSON.parse(incomeArray);
    console.log("there is an array and I parsed it");
  }

return incomeArray;
}

【问题讨论】:

  • 我将数组添加到本地存储中,但没有添加实际值。现在好了
  • 哦,现在可以了吗?在 JSFiddle 上使用 localStorage 有点困难,因为它有时使用域 jsfiddle.net 有时使用 fiddle.jshell.net...

标签: javascript jquery html jquery-mobile local-storage


【解决方案1】:

除非您在原始问题中打错字,否则您对 getItem 的调用应该是普通括号,而不是方括号,例如:var incomeArray = localStorage.getItem("incomeArray")

很可能正因为如此,您的变量是未定义的,它将进入 setItem 子句

【讨论】:

  • 是的,我知道为什么这是一个错字……getItem 方法是一个返回属性的函数,[] 是一个属性访问器……有点相似,所以 OP 可能会混淆两个。
  • 这似乎是问题所在,但我想我会问,只是为了确保是这样 :-)
  • 这绝对是问题所在。谢谢你的帮助!从本地存储中检索数据时遇到问题。它以未定义的形式出现...
  • JSON.parse 应该让你返回数组对象,然后你可以提醒收入 array.length 看看里面是否有任何东西,因为它可能是数组是空的?
【解决方案2】:
var incomeArray = localStorage.getItem["incomeArray"];

getItem 是一个以键名作为其参数的函数,因此请使用圆括号:

var incomeArray = localStorage.getItem("incomeArray");

【讨论】:

  • 谢谢!我很惊讶我错过了。它的数据不再被删除,这太棒了。但是,当我尝试从 localstorage 打印我的项目时,它们返回为“未定义”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
相关资源
最近更新 更多