Javascript 使用函数删除c3中的图形

Javascript 使用函数删除c3中的图形,javascript,c3.js,Javascript,C3.js,当图表是在以下函数中创建时,如何处理图表#.destroy(): function create(i){ chart = 'chart' + i chart = c3.generate(...) } create(1) create(2) create(3) 所以它创建了图表1,图表2,图表3 我正在尝试使用按钮调用函数:清除图表: function clear_chart(){ for(i=1; i<4; i++){ chart = 'chart

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

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

所以它创建了图表1,图表2,图表3

我正在尝试使用按钮调用函数:清除图表:

function clear_chart(){
    for(i=1; i<4; i++){
       chart = 'chart' +i
       chart.destroy()
    }
}
功能清除图(){

对于(i=1;i而言,之所以会发生这种情况,是因为您没有选择这样做的图表:

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();     
    }
}
var图表=[];
函数create(){
var图表=c3.生成(…);
图表。推送(图表);
}
//调用创建函数。。。
函数清除图(){
对于(i=1;i<4;i++){
var图表=图表[i-1];
chart.destroy();
}
}

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

一个额外的用例——我试图使用clear\u图表不断地重新绘制图表,但我不断得到一个错误,即未捕获的引用错误:图表未定义`function redraw(){clear\u chart()create\u chart()}setInterval(redraw(),1000)`您可以对我在回答中提到的数组执行相同的方法,但不需要清除然后再次创建它。您只需通过load()方法()更新数组上的数据,然后调用flush()重新绘制它()。这里重要的是重构您的代码,以便您有一个对图表对象的引用来调用它的函数。未定义的问题现在应该在我的clear_chart方法中解决。另外,请确保在clear chart函数的循环迭代中没有出现arrayOutOfBounds错误。)