在诸如以下函数中创建图表时,如何处理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”
答案 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选择函数。