Javascript 如何清除画布的特定元素?

Javascript 如何清除画布的特定元素?,javascript,html,canvas,html5-canvas,fabricjs,Javascript,Html,Canvas,Html5 Canvas,Fabricjs,如果我只想清除某个元素,如何使用Fabric.js的canvas.clear?我的目的是在按下“删除”按钮后清除背景,但保留字体。我如何做到这一点?它们都被添加到画布上,因此如果我使用canvas.clear它们都被删除 我必须用两张画布吗 删除 您必须重新绘制除背景以外的所有内容: function draw( background ) { var canvas = new fabric.Canvas( 'canvas' ); canvas.clear();

如果我只想清除某个元素,如何使用Fabric.js的canvas.clear?我的目的是在按下“删除”按钮后清除背景,但保留字体。我如何做到这一点?它们都被添加到画布上,因此如果我使用
canvas.clear
它们都被删除

我必须用两张画布吗


删除

您必须重新绘制除背景以外的所有内容:

function draw( background ) {

    var canvas = new fabric.Canvas( 'canvas' );

    canvas.clear();

    var textObj1 = new fabric.Text('font test', {
        left: 100,
        top: 350,
        fontSize: 30,
        fill: "#FF0000" // Set text color to red
    });

    canvas.add(textObj1);

    if ( background ) {
        fabric.Image.fromURL( 'http://s17.postimg.org/4740ku7z3/i_Stock_000000284123_XSmall.jpg', function (oImg) {
            // scale image down, and flip it, before adding it onto canvas
            oImg.scale(1);
            oImg.selectable = false;
            canvas.add(oImg);
        } );
    }

}

// Call function with background
draw( true );

function deleteimg(){

    // Call function without background
    draw( false );

};

谢谢xufox,谢谢你纠正我的错误并帮助编辑。谢谢是我需要的东西,但是有什么方法可以使用clear吗?我不想打开和关闭它,因为我需要将背景更改为其他内容。请使用
if(background){…}else{other code;}
而不是
if(background){…}
function draw( background ) {

    var canvas = new fabric.Canvas( 'canvas' );

    canvas.clear();

    var textObj1 = new fabric.Text('font test', {
        left: 100,
        top: 350,
        fontSize: 30,
        fill: "#FF0000" // Set text color to red
    });

    canvas.add(textObj1);

    if ( background ) {
        fabric.Image.fromURL( 'http://s17.postimg.org/4740ku7z3/i_Stock_000000284123_XSmall.jpg', function (oImg) {
            // scale image down, and flip it, before adding it onto canvas
            oImg.scale(1);
            oImg.selectable = false;
            canvas.add(oImg);
        } );
    }

}

// Call function with background
draw( true );

function deleteimg(){

    // Call function without background
    draw( false );

};