javascript - JS 使用 localstorage 删除 Todolist 中的项目。它按顺序删除索引(0、1、2、3、4)当我点击它时如何指定我的删除项目?
问题描述
新手在这里......在javascript中使用我的deleteItem函数时
假设我添加了一个列表项 1、2、3、4,在我的 localStorage 中它将等于 [1、2、3、4] 的数组
因此,当我单击删除按钮时,可以说要删除 3 号。
发生的情况是 3 将在“页面”中删除,但不会在我的 localStorage 中删除
localStorage 显示 [2, 3, 4] (删除 1 而不是 3)
它应该是 [1, 2, 4]
并且当点击页面刷新时..页面中的列表项将更改为 2, 3, 4 等于 localStorage
这意味着它总是按顺序删除第一个数组,直到最后一个数组
const add = document.getElementById("additem")
const remove = document.getElementById("removeitem")
const input = document.getElementById("inputBlank")
const contain = document.getElementById("container")
const LOCAL_STORAGE_PREFIX = "TODO_APP_V1"
const TODOS_STORAGE_KEY = `${LOCAL_STORAGE_PREFIX}- todos`
let todos = loadTodos() // Load from local storage
/// Appending all
add.addEventListener('click', function (e) {
e.preventDefault()
let btn = document.createElement('button');
let paragraph = document.createElement("th");
btn.innerText="x";
btn.style.background="";
paragraph.innerText = input.value;
if (input.value === "") return alert("Write text in the blank field")
todos.push(paragraph.innerText)
input.value = "";
paragraph.appendChild(btn);
contain.appendChild(paragraph)
saveTodos()
btn.addEventListener('click', function () {
deleteItem(todos) // calling delete function for localstorage
contain.removeChild(paragraph)
})
remove.addEventListener('click', function () {
localStorage.removeItem(TODOS_STORAGE_KEY)
})
})
///Saving to local storage
function saveTodos() {
localStorage.setItem(TODOS_STORAGE_KEY, JSON.stringify(todos))
}
//Getting from local storage
function loadTodos() {
const todos = localStorage.getItem(TODOS_STORAGE_KEY)
return JSON.parse(todos) || []
}
///for localstorage
todos.forEach((element) => {
let paragraph = document.createElement("th");
paragraph.innerText = element;
let btn = document.createElement("button");
btn.innerText = "x";
btn.style.background="";
paragraph.appendChild(btn);
contain.appendChild(paragraph);
btn.addEventListener('click', function () {
deleteItem(todos) // calling delete function for localstorage
contain.removeChild(paragraph)
})
remove.addEventListener('click', function () {
localStorage.removeItem(TODOS_STORAGE_KEY)
})
});
///delete function
function deleteItem(index) {
let todos = JSON.parse(localStorage.getItem(TODOS_STORAGE_KEY))
todos.splice(index, 1)
localStorage.setItem(TODOS_STORAGE_KEY, JSON.stringify(todos))
}
解决方案
推荐阅读
- javascript - vue-youtube-embed 中未定义模板或渲染函数
- javascript - 无法将war文件导入eclipse
- node.js - 尝试登录用户时,用户 ID 返回“未定义”
- python - Scrapyd 作业未开始
- vba - 如何让我的 VBA 按钮仅在一个选项卡上运行?
- angular - Angular 2使用模板内的已知键从地图访问值
- ios - 在 UITableViewCell 中重用 UITextView
- rust - 使用图像箱时如何获得 u8 RGB 值的向量?
- jquery - 如何在页面加载时将 Bootstrap Modal 变成弹出窗口?
- r - 如果一个函数是在另一个函数中创建的,那么函数常量存储在哪里?