【问题标题】:i got error : Cannot read property 'push' of null我收到错误:无法读取 null 的属性“推送”
【发布时间】:2017-12-30 14:46:53
【问题描述】:

我试过this reference,但还是不行。

这对我来说是新事物,刚开始学习javascript。

var getTbl = localStorage.getItem("tableList");
var resultTable = [];
if (getTbl !== undefined && getTbl !== '') {
  resultTable = JSON.parse(getTbl);
}
let newtableHTML = addTable;
resultTable.push({
  table: newtableHTML
});
// save the new resultFolder array
localStorage.setItem("tableList", JSON.stringify(resultTable));

我尝试这样的事情,但没有运气:

var resultTable = resultTable || [];

对不起,如果我尝试这种方式有误。

【问题讨论】:

  • getTbl 可能将 resultTable 设置为 null if (getTbl !== undefined && getTbl !== '') { resultTable = JSON.parse(getTbl); } 检查这部分代码
  • 猜想,但我认为存储在本地存储中的“tableList”的值曾经被意外设置为null,现在所有实例都返回了该值。尝试从开发人员工具中清除本地存储,然后再次尝试运行代码。
  • localStorage.getItem 如果密钥不存在,则返回 null。

标签: javascript


【解决方案1】:

线

resultTable = JSON.parse(getTbl);

JSON.parse 返回的任何内容替换 resultTable 变量的内容。显然JSON.parse 没有返回一个数组(或其他类型的具有push 方法的对象,但数组是唯一的内置对象)。

我的猜测是它返回 null,因为如果本地存储中不存在密钥,getItem 返回 null,但您没有检查它。所以你将null 传递给JSON.parse,它被强制转换为字符串("null"),然后解析为JSON,产生...null

既然你要存储一个数组(而且数组永远不会是假的),我可能会这样做:

var getTbl = localStorage.getItem("tableList");
var resultTable = getTbl ? JSON.parse(getTbl) : []; // <====
let newtableHTML = addTable;
resultTable.push({
  table: newtableHTML
});
// save the new resultFolder array
localStorage.setItem("tableList", JSON.stringify(resultTable));

这测试getItem 给我们的内容是否虚假,如果是,则使用[] 代替。

但这个主题有十几种变体。例如:

var resultTable = JSON.parse(localStorage.getItem("tableList") || "[]"); // <===
let newtableHTML = addTable;
resultTable.push({
  table: newtableHTML
});
// save the new resultFolder array
localStorage.setItem("tableList", JSON.stringify(resultTable));

【讨论】:

    【解决方案2】:

    将“resultTable”的初始化方式更改为:

    resultTable = new Array();
    

    这样数据才能正确推送到resultTable。

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2022-01-16
      • 1970-01-01
      • 2021-01-19
      相关资源
      最近更新 更多