如何解决如何从对象中删除项目
我正在使用数据表和导入器 CSV 文件来填充表格并填充隐藏输入
当我按下表格中的删除按钮时,我正在尝试删除一个项目,目前我有这个
$('#task-place-table tbody').on('click','.deleted',function () {
dataTable
.row($(this).parents('tr'))
.remove()
.draw();
itemCounter--;
document.getElementById('item-counter').value = itemCounter;
});
例如,这是输入
[{"url":"http://www.restaurant.com","businessTypeId":"1"},{"url":"http://www.hotel.com","businessTypeId":"2"},{"url":"http://www.test.com","businessTypeId":"3"}]
在示例中,我删除了餐厅和测试项目,但在隐藏输入中,项目仍然保留在那里(注意:businessTypeId 不是行 ID)
[{"url":"http://www.hotel.com","businessTypeId":"2"}]
重要提示:businessTypeId 不是行 ID 或 Item ID,数字 2 是巧合(该数字是数据库中的 ID)
如何删除项目?
解决方法
- 获取对隐藏输入的引用。
- 修改隐藏输入的值数组。
即:
// "3" being the 'id' of the deleted item(s)
hiddenInputHandle.value = hiddenInputHandle.value.filter(i->i.businessTypeId !== "3")
,
解决方案,用splice和for,循环遍历数组,以url为参考清除数据
$('#task-place-table tbody').on('click','.deleted',function () {
let value = $(this).closest('tr').find('td').eq(1).text();
for (let i = 0; i < placesArray.length; i++) {
if (placesArray[i].url == value) {
placesArray.splice(i,1);
break;
}
}
$('#places').val(JSON.stringify(placesArray));
dataTable
.row($(this).parents('tr'))
.remove()
.draw();
itemCounter--;
document.getElementById('item-counter').value = itemCounter;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。