Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript使用唯一属性从画布中删除多个对象_Javascript_Html_Canvas_Fabricjs - Fatal编程技术网

javascript使用唯一属性从画布中删除多个对象

javascript使用唯一属性从画布中删除多个对象,javascript,html,canvas,fabricjs,Javascript,Html,Canvas,Fabricjs,我正在使用fabric js并尝试在尝试删除组的父项时删除组项。下面是我的代码 jQuery(document).on('click', ".deleteBtn", function () { if (canvas.getActiveObject()) { var product_id = canvas.getActiveObject().get('product_id'); } var canvasObj = canvas.getObjects

我正在使用fabric js并尝试在尝试删除组的父项时删除组项。下面是我的代码

jQuery(document).on('click', ".deleteBtn", function () {
    if (canvas.getActiveObject()) {
        var product_id = canvas.getActiveObject().get('product_id');
     }
        var canvasObj = canvas.getObjects();

    for(var i = 0; i < canvasObj.length; i++){

        var objRef = canvasObj[i];

        var accessoryId = objRef.get('accessory_product_id');

        var product_type = objRef.get('product_type');

        if(accessoryId == product_id && product_type == "accessory"){
            canvas.remove(objRef);
        }

    }
});

您好,我在您的代码中注意到,您尝试获取活动对象的对象id,但无论是否存在活动对象,您继续循环,删除对象!! 也许,这就是问题的根源

我将展示一个使用forEach()函数的示例,但仅当存在活动对象时才继续删除对象:

jQuery(document).on('click', ".deleteBtn", function () {

    //only if there is active object, do i delete objects
    if (canvas.getActiveObject()) {
        //get productId of active object
        var product_id = canvas.getActiveObject().product_id;

        //loop on the canvas objects
        canvas.getObjects().forEach(function (object) {

               if(object.accessoryId == product_id && object.product_type ==  "accessory"){
                canvas.remove(object);
              }
        });//end forEach
    }//end if
});//end 'click'

希望有帮助,祝你好运。

你好,我在你的代码中注意到你尝试获取活动对象的id,但不管是否有活动对象,你继续循环,删除对象!! 也许,这就是问题的根源

我将展示一个使用forEach()函数的示例,但仅当存在活动对象时才继续删除对象:

jQuery(document).on('click', ".deleteBtn", function () {

    //only if there is active object, do i delete objects
    if (canvas.getActiveObject()) {
        //get productId of active object
        var product_id = canvas.getActiveObject().product_id;

        //loop on the canvas objects
        canvas.getObjects().forEach(function (object) {

               if(object.accessoryId == product_id && object.product_type ==  "accessory"){
                canvas.remove(object);
              }
        });//end forEach
    }//end if
});//end 'click'

希望有帮助,祝你好运。

请添加html标记。html标记对于这件事并没有那么重要,但正如您所要求的那样。我想在这里发生的是,当使用时,单击
data-product\u type=“parent”
中的删除按钮,所有其他图像都需要从画布中删除。thanksI指的是画布,而不是页面中的随机html!我在这里使用的是
fabric.js
库。我在这里使用的唯一画布html标记是请包含添加的html标记。html标记对于这件事并没有那么重要,但正如您所要求的那样。我想在这里发生的是,当使用时,单击
data-product\u type=“parent”
中的删除按钮,所有其他图像都需要从画布中删除。thanksI指的是画布,而不是页面中的随机html!我在这里使用的是
fabric.js
库。我在这里使用的唯一画布html标记是