使用函数删除c3中的图形

时间:2019-07-16 14:11:05

标签: javascript c3.js

在诸如以下函数中创建图表时,如何处理chart#.destroy()?

function create(i){
    chart = 'chart' + i
    chart = c3.generate(...)
}
create(1)
create(2)
create(3)

以便创建chart1,chart2,chart3。

我试图让一个按钮调用一个函数:clear_chart:

function clear_chart(){
    for(i=1; i<4; i++){
       chart = 'chart' +i
       chart.destroy()
    }
}

我收到一个错误:未捕获的TypeError:无法读取未定义的属性“ destroy”

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为您没有选择执行此操作的图表:

chart = 'chart' +i

您还可以从create方法中删除与对代码不执行任何操作相同的行。您正在为图表变量分配一个值,然后在生成图表时将其重新分配,变量名称仍为“图表”。

使用图表对象的最简单方法是将它们存储在数组中,然后使用它们:

var charts = [];
function create(){
    var chart = c3.generate(...);
    charts.push(chart);
}
//call create function...

function clear_chart(){
    for(i = 1; i < 4; i++){
        var chart = charts[i - 1]; 
        chart.destroy();     
    }
}

如果您只想通过它们的名称选择特定的对象,我建议您看一下jQuery选择器(如果可能的话,将jQuery添加到您的项目中)或d3选择函数。