我得到了错误:无法读取属性'推送'为null

时间:2017-12-30 14:46:53

标签: javascript

我尝试过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 || [];

很抱歉,如果我这样做错了。

2 个答案:

答案 0 :(得分:3)

该行

resultTable = JSON.parse(getTbl);

使用resultTable返回替换<{1}}变量的内容。显然JSON.parse没有返回一个数组(或者使用JSON.parse方法的其他类型的对象,但是数组是唯一可以内置的数组。)

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

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

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代替。

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

[]

答案 1 :(得分:0)

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

resultTable = new Array();

以便可以将数据正确地推送到resultTable。