我正在尝试创建一个饼图,可以在其中使用按钮从两个数据系列中进行切换。
当我将值直接传递给setData()
按钮onclick事件上的函数时,一切工作正常。参见jsfiddle(工作)。
但是,如果我将数据保存在数组中,则当我使用setData()时,该函数将用第二个覆盖第一个数组。参见jsfiddle(不起作用)。
综上所述,当我直接使用数据时,它可以工作:
// the button action
$('#button').click(function () {
var chart = $('#container').highcharts();
bool_pie = !bool_pie;
if(!bool_pie){
chart.series[0].setData([129.2, 144.0, 176.0]);
}else{
chart.series[0].setData([29.9, 71.5, 106.4]);
}
});
但是当我使用变量时,数组data1
会被数组覆盖data2
var data1 = [29.9, 71.5, 106.4];
var data2 = [129.2, 144.0, 176.0];
// the button action
$('#button').click(function () {
var chart = $('#container').highcharts();
bool_pie = !bool_pie;
if(!bool_pie){
chart.series[0].setData(data2);
}else{
chart.series[0].setData(data1);
}
});
因此,我已经确定了问题,但是我不知道该如何解决。
我发现了你的问题。当传递data1
到highcharts初始化时,您传递的是对该引用的引用data1
,该引用将通过highcharts转换为对象数组。您必须传递该数组的副本才能具有data1
和data2
作为数组:
$(function () {
var data1 = [29.9, 71.5, 106.4];
var data2 = [129.2, 144.0, 176.0];
var bool_pie = true;
$('#container').highcharts({
chart: {
type: 'pie'
},
series: [{
data: data1.slice(0, data1.length)
}]
});
// the button action
$('#button').click(function () {
var chart = $('#container').highcharts();
bool_pie = !bool_pie;
var data = (!bool_pie) ? data2 : data1;
chart.series[0].setData(data); //PASSING ARRAY VARIABLE
});
});
我修改了以下行: data: data1.slice(0, data1.length)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句