Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么任务没有';是否不从本地存储中删除?_Javascript_Local Storage - Fatal编程技术网

Javascript 为什么任务没有';是否不从本地存储中删除?

Javascript 为什么任务没有';是否不从本地存储中删除?,javascript,local-storage,Javascript,Local Storage,当我按下delete task(x符号)时,它会从UI中删除任务,然后搜索本地存储以将其删除,我遇到了一个问题。从存储中删除的功能运行良好,我通过控制台检查了它。比较UI中的任务文本和本地存储中的任务数组中的任务文本时,唯一的问题是:它们是相同的,都是字符串,但仍然不起作用,当您重新加载页面时,任务仍然在页面上,并且没有从本地存储中删除储藏 您的解决方案有几个问题 为了直接回答您的问题,它没有删除的原因是,当您在addTask函数中将任务添加到HTML中时,元素的textContent最终成为

当我按下delete task(x符号)时,它会从UI中删除任务,然后搜索本地存储以将其删除,我遇到了一个问题。从存储中删除的功能运行良好,我通过控制台检查了它。比较UI中的任务文本和本地存储中的任务数组中的任务文本时,唯一的问题是:它们是相同的,都是字符串,但仍然不起作用,当您重新加载页面时,任务仍然在页面上,并且没有从本地存储中删除储藏


您的解决方案有几个问题

为了直接回答您的问题,它没有删除的原因是,当您在
addTask
函数中将任务添加到HTML中时,元素的
textContent
最终成为
'task'
(请注意末尾的额外空间)

快速修复:

if(taskItem.textContent.trimEnd() === task){
    tasks.splice(index, 1);
}
下一个问题是,您正在拼接正在迭代的数组!这将导致索引混乱,您将跳过拼接后的下一项

例如:

let x = [1,2,3,4,5];
x.forEach(function(item, index) {
    if (item === 3) {
        x.splice(index, 1);
    }
    console.log(item); // prints: 1, 2, 3, 5
});
解决此问题的最简单方法是:

tasks = tasks.filter((task, index) => taskItem.textContent.trimEnd() !== task);

你调试了吗
console.log(index,taskItem.textContent,task)
非常感谢我在“task”后面的空白处收到了它。我在第一次阅读您的解决方案时并没有注意到,我使用了trimEnd(),它工作得很好。现在我删除了空间,效果很好。再次感谢
tasks = tasks.filter((task, index) => taskItem.textContent.trimEnd() !== task);