无法读取未定义的 highcharts highstock 的 属性 'type'
Cannot read property 'type' of undefined highcharts highstock
我在一个视图中有四个 highstock 图表 "Compare multiple series"
有时它们加载得很好,但有时随机不加载并给出错误:"Cannot read property 'type' of undefined".
有我的代码:http://pastebin.com/3He5ahzd
我不知道我做错了什么。
这是因为您错误地加载了图表的系列。
重现错误的代码。 Live example
var series = [];
series[1] = {
data: [1,2,3]
};
Highcharts.chart('container', {
series: series
});
错误是由length = 2
的系列数组引起的,但第一个元素未定义。在您的代码中,它是由 ajax 请求的不正确使用引起的。可以在第一个 ajax 请求填充系列变量之前创建图表。您应该嵌套回调或使用其他方法来防止 ajax 请求的竞争。
var seriesOptionsmaxload = [];
$.getJSON('/test/statistics/5/list?parameter=maxLoad&type=wats', function (max) {
seriesOptionsmaxload[0] = {
name: 'Maksymalne obciążenie',
color: '#ff0000',
data: max
};
$.getJSON('/test/statistics/5/list?parameter=maxLoad&type=perKg', function (max) {
seriesOptionsmaxload[1] = {
name: 'W/kg',
color: '#085fbc',
data: max
};
Highcharts.stockChart('maxLoad', {
...
});
});
我已经打了第二次了,现在我知道是什么原因造成的了。
当你的图形数据有这样的系列数据时:
series: [1, 2, null, 3, 4]
或
series: [1, 2, undefined, 3, 4]
它会抛出这个错误,因为 highstock.src.js
显示 highstock 遍历数组中的每个项目并检查类型 属性,如下所示:
i = seriesOptions && seriesOptions.length;
while (!value && i--) {
klass = seriesTypes[seriesOptions[i].type]; // ERROR THROWN HERE
if (klass && klass.prototype[key]) {
value = true;
}
}
要防止此错误,您可以:
(1) 从数组中删除所有非对象
或
(2) 使用替代系列格式如下:
series: [{
data: [1, 2, undefined, 3, 4]
}]
这将避免此错误。
我在一个视图中有四个 highstock 图表 "Compare multiple series" 有时它们加载得很好,但有时随机不加载并给出错误:"Cannot read property 'type' of undefined".
有我的代码:http://pastebin.com/3He5ahzd
我不知道我做错了什么。
这是因为您错误地加载了图表的系列。
重现错误的代码。 Live example
var series = [];
series[1] = {
data: [1,2,3]
};
Highcharts.chart('container', {
series: series
});
错误是由length = 2
的系列数组引起的,但第一个元素未定义。在您的代码中,它是由 ajax 请求的不正确使用引起的。可以在第一个 ajax 请求填充系列变量之前创建图表。您应该嵌套回调或使用其他方法来防止 ajax 请求的竞争。
var seriesOptionsmaxload = [];
$.getJSON('/test/statistics/5/list?parameter=maxLoad&type=wats', function (max) {
seriesOptionsmaxload[0] = {
name: 'Maksymalne obciążenie',
color: '#ff0000',
data: max
};
$.getJSON('/test/statistics/5/list?parameter=maxLoad&type=perKg', function (max) {
seriesOptionsmaxload[1] = {
name: 'W/kg',
color: '#085fbc',
data: max
};
Highcharts.stockChart('maxLoad', {
...
});
});
我已经打了第二次了,现在我知道是什么原因造成的了。
当你的图形数据有这样的系列数据时:
series: [1, 2, null, 3, 4]
或
series: [1, 2, undefined, 3, 4]
它会抛出这个错误,因为 highstock.src.js
显示 highstock 遍历数组中的每个项目并检查类型 属性,如下所示:
i = seriesOptions && seriesOptions.length;
while (!value && i--) {
klass = seriesTypes[seriesOptions[i].type]; // ERROR THROWN HERE
if (klass && klass.prototype[key]) {
value = true;
}
}
要防止此错误,您可以:
(1) 从数组中删除所有非对象
或
(2) 使用替代系列格式如下:
series: [{
data: [1, 2, undefined, 3, 4]
}]
这将避免此错误。