- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个非常基本的待办事项列表应用程序,我从 Youtube 复制了这个想法(仍在学习 JS)。因此,每次添加新的待办事项时,它都会存储在一个数组中(只是您键入的文本以及是否完成)并添加了 HTML 元素,直到这里一切都很好。
当我尝试从数组中删除该元素时,问题就开始了。每个项目(待办事项)都有一个 ID,它基本上是它存储在数组中的索引,所以我编码 array.splice(item.id, 1)
如果你耐心地一个一个地删除项目,它效果很好,但是如果你更快地点击删除按钮,数组中删除的项目不匹配,就像传递的索引搞砸了一样。我想知道我是否可以等待直到当前的 delete() 函数结束或类似的东西。顺便说一句,列表容器有一个 eventListener,如果单击任何项目的删除按钮,它会运行 delete() 函数通过 e.target.parentElement
传递该项目。 (这是项目容器)。
我想要一个 localeStorage 的数组。谢谢!
第一次发帖,英语不是我的母语,如有任何错误,请见谅。
最佳答案
很好的问题。所以.splice()
确实是您要调用的 Array 方法,但它并没有完全使用您期望的语法。
首先,我将向您指出 MDN 文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
MDN 由 Mozilla 管理,是浏览器 javascript 中大多数内容的权威来源。如果您刚刚开始使用 javascript,那么该资源将非常宝贵。 MDN 文档是一些最好的书面技术文档,主要是为了让语言经验最少的人能够理解它们。
话虽如此,让我们回顾一下 Array.splice 实际在做什么。
所以你有一系列的待办事项:
const todos = [] // Array of to-dos
const todo = {
id: 1 // number
name: 'my todo' // string
description: 'my todo description' // string
}
function removeItemFromTodos(itemId, todos) {
// find the index of the todo with the id you are looking for
const indexOfTodoToDelete = todos.findIndex((todoInArray) => todoInArray.id === itemId));
// remove that todo:
todos.splice(indexOfTodoToDelete, 1) // delete the todo
}
关于javascript - 从数组中删除元素(待办事项列表应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59832967/
我是一名优秀的程序员,十分优秀!