【发布时间】:2020-09-25 18:13:15
【问题描述】:
我创建了一个带有本地存储的待办事项列表。如果您创建三个列表项并删除第二个,则已删除的列表项将在刷新时重新出现在第三项的位置。
编辑:我不确定它是否与本地存储或原始 todo 数组有关。在下面的代码中,我试图从数组中删除相关值,但我怀疑这不起作用(将数组记录到控制台不会产生任何结果)。
虽然与本地存储无关,但我认为问题在于以下代码:
function removeItem() {
let item = this.parentNode.parentNode;
let parent = item.parentNode;
let id = parent.id;
console.log(id)
let value = parent.textContent;
todo.splice(todo.indexOf(value, 1));
this.parentNode.parentNode.removeChild(this.parentNode);
saveTodos();
}
编辑:这是我用来存储列表项的代码:
function saveTodos() {
let jsonstr = JSON.stringify(todo);
localStorage.setItem('todo', jsonstr);
}
function getTodos() {
localStorage.getItem('todo')
let jsonstr = localStorage.getItem("todo");
todo = JSON.parse(jsonstr);
if (!todo || !todo.length) {
todo = [];
}
else {
renderTodoList();
} }
这里是codepen的链接:https://codepen.io/david-webb/pen/yLeqydK
你能帮忙吗?
【问题讨论】:
-
请在问题本身中包含minimal reproducible example (preferable as snippet
<>),而不仅仅是指向可能无法访问的外部资源的链接(无论出于何种原因)- > How do I ask a good question? -
您在问题本身中包含的所有代码都与本地存储无关
-
看起来不错,本地存储使用您的代码笔对我来说很好....查看存储的内容转到开发工具->应用程序->左侧的本地存储,同时删除获取选择索引并相应地拼接你做错了......
-
@Aluan Haddad 感谢您的评论,您是对的。我添加了更多细节以尝试更好地解释问题
-
我认为问题在于您在删除项目后没有更新数组。每个修改数组的函数都应该返回更新后的数组。返回值的函数及其一致的使用使代码更容易理解和推理
标签: javascript arrays local-storage parent-node