在ASP.NET站点中使用HighCharts 2.2.3。 有关代码示例,请参阅http://jsfiddle.net/wergeld/TDLvc/。 我的网站设置与jsFiddle显示的有点不同。 我更改系列的函数存在于一个包含的JS文件中,并且函数的调用与图表创建JS代码没有“内联”(尽管它仍然包含在文档就绪的jquery中)。
我有两个问题,其中一个可以在jsFiddle中看到。 1)更改图表类型时,看起来yAxis指定会丢失。您可以看到我最初有2个yAxis,在您更改图表类型后,顶部轴不再具有值标签(表示图表数据仅使用底部轴(第一个yAxis))。 2)在FF或IE下运行时,我在调用的行上出现错误:
data: serie.options.data
错误是: c不是构造函数 55号线 在highcharts.js中(这是最小文件)。
使用highcharts.src.js我现在可以看到错误是: typeClass不是构造函数
这是在src.js的8789行: serie = new typeClass();
请参阅更新的jsFiddle:选择Point作为图表类型:http://jsfiddle.net/wergeld/nS4Ny/1/。 这将引发该错误。
答案 0 :(得分:7)
此问题是我们的下拉值的大写。更改了检查:
newType = newType.toLowerCase();
现在图表类型更改很有效。完整代码:
function changeType(chart, series, newType) {
newType = newType.toLowerCase();
for (var i = 0; i < series.length; i++) {
series = series[0];
try {
series.chart.addSeries({
type: newType,
stack: series.stack,
yaxis: series.yaxis,
name: series.name,
color: series.color,
data: series.options.data
},
false);
series.remove();
} catch (e) {
alert(newType & ': ' & e);
}
}
}
答案 1 :(得分:0)
对于偶然发现这个的人来说...... 您必须删除图表系列#39;从最后到第一。还记得重绘最后一个系列,否则你的更改不会显示:)
function changeChartType(chart, type, redraw) {
var seriesOptions = new Array(chart.series.length);
for (var i = 0; i < chart.series.length; i++) {
var series = chart.series[i];
seriesOptions[i] = {
type: type,
name: series.name,
color: series.color,
dashStyle: series.options.dashStyle,
lineWidth: series.options.lineWidth,
marker: series.options.marker,
dataLabels: series.options.dataLabels,
enableMouseTracking: series.options.enableMouseTracking,
data: series.options.data,
isRegressionLine: series.options.isRegressionLine
};
}
for (var i = chart.series.length - 1; i >= 0; i--) {
chart.series[i].destroy();
}
for (var i = 0; i < seriesOptions.length; i++) {
var newSeries = chart.addSeries(seriesOptions[i], redraw && i == seriesOptions.length - 1);
}
chart.currentType = type;
}