javascript - 在第二个 Web 会话/刷新后在 localStorage 中设置项目
问题描述
我正在将数组元素设置到我的 localStorage 中。
我在这里单击功能 appendTasks 一次,项目被正确存储在 localStorage 上,用于第一个 Web 会话:
function appendTasks() {
tasks.push(input.value);
tasks.join(" ");
for (let i = 0; i < tasks.length; i++) {
//Add to Local Storage
localStorage.setItem(i, tasks[i])
}
这就是我的 localStorage 的样子:
一旦我在添加这些元素后刷新页面并尝试添加更多元素,它根本不会。它甚至可以在第一个 Web 会话中添加元素。
任何人都知道为什么我会看到这种行为?
谢谢
解决方案
不知道你为什么要以这种方式存储任务,但你可以尝试这样的事情。您几乎希望跟踪添加到本地存储的项目数量,并将其作为项目存储在本地存储中。然后每次刷新页面时都设置taskIndex
为下一个要使用的索引。
function appendTasks() {
let taskIndex = localStorage.getItem('taskIndex');
taskIndex = taskIndex ? parseInt(taskIndex) : 0;
tasks.push(input.value);
for (let i = 0; i < tasks.length; i++) {
//Add to Local Storage
localStorage.setItem(taskIndex, tasks[i]);
taskIndex++
}
localStorage.setItem('taskIndex', taskIndex);
}
推荐阅读
- java - 如何在我的 GridPane 上使用 onMouseClicked 修复“非法参数异常”?
- reactjs - TypeScript React:RouteComponentProps 类型错误或无法访问历史记录
- c# - 恢复sql数据库C#时找不到方法
- odoo-11 - 我在哪里可以下载适用于企业的 odoo 11 插件?
- python - TypeError: 无法连接类型为 ' 的对象
'; 只有 Series 和 DataFrame obj 是有效的 - regex - 在 Bash 的正则表达式中添加下划线
- sql - SQL将一张表的多条记录合并成另一张表的多列
- javascript - 如何在点击时使弹出 div 隐藏/显示
- import - 从外部 wiki 读取和导入数据
- php - PHP中的单个到多个数组