我有一种情况,我通过单击按钮添加表,并且每个表都存储在数组中。现在,当我删除 2 或 3 个表时,错误的索引将被删除。
addTable: function (obj) {
for (var i = 0; i < obj.length; i++) {
// Adding of table
array.push(obj)
// delete code of the table
(function (i) {
deleteButton.addEventListener('click', function (e) {
array.splice(i, 1);
});
})(i);
}
}
我面临的问题是 i 的值始终零
。每次我单击按钮时,都会调用 addTable
函数,并且计数器始终零
,并传递给 function(i)
也是。
关于如何跟踪不同的 i 或计数器以便删除数组中正确的索引的任何想法
这是更新
这是我每次发送的示例对象。
每次我单击“添加表”按钮时,都会传递相同的对象。现在我很难跟踪每个项目的索引。
最佳答案
一旦您删除了一个表,所有其他表都已移动,并且您在删除按钮中安装的索引现在将是错误的。当您从数组中删除项目时,所有索引都会发生变化。
所以,假设您删除表 3。然后,您对表 4 按删除。它的索引为 4,但由于您已经删除了表 3,所以它现在位于数组中的位置 3(在上次删除之后),不是点 4。但是,您的代码仍然具有与该表关联的 i==4,并试图在此处删除它,但它不再存在了。
你正在做的事情并不是一个好方法。如果您想进一步扩展您真正想做的事情,我们可以提供更好的解决方案。
鉴于我们迄今为止掌握的信息有限,我所知道的就是在数组中找到该项目(无论它可能移动到哪里)并从那里删除它。
addTable: function (obj) {
for (var i = 0; i < obj.length; i++) {
// Adding of table
array.push(obj)
// delete code of the table
(function (item) {
deleteButton.addEventListener('click', function (e) {
// search through the array to find where this item is
// and remove it from the array
for (var j = 0; j < array.length; j++) {
if (array[j] === item) {
array.splice(j, 1); // remove it
break;
}
}
});
})(obj);
}
}
关于javascript - 删除数组元素是一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579663/