微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从对象中删除项目

如何解决如何从对象中删除项目

我正在使用数据表和导入器 CSV 文件来填充表格并填充隐藏输入

当我按下表格中的删除按钮时,我正在尝试删除一个项目,目前我有这个

        $('#task-place-table tbody').on('click','.deleted',function () {
            dataTable
                .row($(this).parents('tr'))
                .remove()
                .draw();
            itemCounter--;
            document.getElementById('item-counter').value = itemCounter;
        });

enter image description here

代码可以从表中删除项目,但不能从隐藏输入中删除

例如,这是输入

[{"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)

如何删除项目?

解决方法

  1. 获取对隐藏输入的引用。
  2. 修改隐藏输入的值数组。

即:

// "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 举报,一经查实,本站将立刻删除。