【发布时间】:2018-01-18 19:36:28
【问题描述】:
我有以下代码:http://jsfiddle.net/maniator/vTjW8/
var createChartTemplate = function() {
return {
chart: new Highcharts.StockChart({
chart: {
renderTo: 'container'
},
series: []
}),
addSeries: function(name) {
this.chart.addSeries({
name: name,
data: [],
id: Math.floor(Math.random()*1000)
});
},
addPoint: function(data, series) {
var seriesIndex = this.seriesExists(series);
if (!(seriesIndex === false)) {
this.chart.series[seriesIndex].addPoint(data, false);
}
this.chart.redraw();
},
seriesExists: function(series) {
var seriesIndex = false;
$.each(this.chart.series, function(index, item) {
if ($.trim(item.name) == $.trim(series)) {
seriesIndex = index;
return false;
}
});
return seriesIndex;
}
}
}
$(function() {
var data = usdeur.splice(0, 700);
var chart = createChartTemplate();
chart.addSeries("New Series");
for (var i = 0; i < data.length; i++) {
chart.addPoint(data[i], "New Series");
}
});
控制台报如下错误:
未捕获的类型错误:无法读取未定义的属性“选项”
如果是普通的 highchart,此代码可以正常工作,但由于某种原因,它不适用于 HighStock 图表。
我怎样才能使它适用于我需要的图表类型?
更新:
我想出了一种动态获取第一个系列的方法,但是当我尝试添加第二个系列时,出现以下错误:
未捕获的类型错误:无法读取未定义的属性“堆栈”
【问题讨论】:
-
那么你有没有想过如何用一个空数据集开始一个 highstock?我面临着类似的问题,即需要在创建图表后向图表动态添加数据。
-
@unexplored 我需要对代码进行测试.... :-\ 非常非常hacky。基本上,当我需要一个新系列时,我用新系列数据重新创建了整个图表.....
-
我找到了满足我需求的解决方案。不知道这是否适用于您的问题(可能也太晚了),但我在下面为其他人发布了答案。
标签: javascript highcharts highstock