【发布时间】:2019-01-15 13:59:25
【问题描述】:
myObj 存储来自用户的输入,该输入被推送到 arr,该输入作为“数据”键存储在 localStorage 中。在提交时,我希望将新值添加到 arr 而不是覆盖它(在 else 部分)。以下代码有效,但会覆盖旧数据:
var myObj = {
field1: fname.value,
field2: lname.value,
field3: birth.value,
field4: salary.value,
field5: String(selectedGender),
field6: String(choicesOfHobby),
field7: color.value,
field8: String(choicesCountry),
field9: textArea.value
}
const arr = new Array()
if (window.localStorage.length == 0) {
const arr = JSON.stringify(myObj);
window.localStorage.setItem('data', arr);
} else {
const arr = JSON.stringify(myObj);
window.localStorage.setItem('data', arr);
}
【问题讨论】:
-
arr不是数组,这里没有推送任何内容。如果你想要一个对象数组,你需要实际使用一个对象数组。 -
localStorage 实际上是一个键值存储,所以你不能有两个相同的键......并且执行 JSON.stringify 不会将对象转换为数组......
-
setData('data')表示您将数据设置为 x,因此您自己覆盖数据。换句话说,您的 if/else 子句什么都不做,因为 if 和 else 都将同一个项目设置为 localStorage 中的同一个键。使用两个不同的名称? -
我知道并且我仍然想要相同的键,但我想更新它的值,所以它是旧的 + 新的 myObj 的字符串,这是输入
-
我被指示使用相同的密钥
标签: javascript