我尝试过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 || [];
很抱歉,如果我这样做错了。
答案 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。