使用函数删除 c3 中的图形

using a function to remove graphs in c3

如何处理图表#.destroy() 当图表在如下函数内创建时:

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

以便创建图表 1、图表 2、图表 3。

我正在尝试让一个按钮调用一个函数:clear_chart:

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

我收到一个错误:未捕获类型错误:无法读取未定义的 属性 'destroy'

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

chart = 'chart' +i

您还可以从 create 方法中删除未对您的代码执行任何操作的同一行。您正在为图表变量分配一个值,然后在生成图表时重新分配它,变量的名称仍然是 "chart".

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

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();     
    }
}

如果你想 select 只是通过他们的名字找到一个特定的人,我建议你看看 jQuery select 或者(如果可能的话添加 jQuery你的项目)或 d3 select 函数。