仅当 highstock 的点数 > 10 时工具提示错误,为什么?
tooltip error only when highstock's point num > 10, why?
我写了一个新的"pointFormatter"函数来显示2个点之间的差距,例如jsfiddle,但是当我将鼠标移动到第一个点“7.Jan”时,工具提示显示不正确,我在控制台中看到错误日志为 "TypeError: this.series.data[preIndex] is undefined"
但是,当我将 timeRange 更改为 "all" 时,将鼠标移动到第一个点不再导致任何错误,当我将 timeRange 更改回“1w”时,它是也行。
此外,如果我通过删除最后一个点将点数从 10 更改为 9,则不会再出现错误。
为什么?是什么导致了这个错误?
$(function() {
var chart = new Highcharts.StockChart({
chart: {
renderTo: 'container'
},
rangeSelector: {
allButtonsEnabled: true,
buttons: [{type: 'week',count: 1,text: '1w'},
{type: 'all',text: 'all'}
],
selected: 0
},
series: [{
name: 'USD',
data: [
[0,null],
[86400000,null],
[86400000*2,null],
[86400000*3,null],
[86400000*4,null],
[86400000*5,null],
[86400000*6,3],
[86400000*7,4],
[86400000*8,6],
[86400000*9,8],
]
}],
plotOptions: {
line: {
step: 'left',
connectNulls: true,
tooltip: {
pointFormatter: function () {
var preIndex = this.index - 1;
while (preIndex >= 0 && this.series.data[preIndex].y == null) {
preIndex--;
}
if (preIndex < 0) {
return '<span style="color:' + this.series.color + '">\u25CF</span>' + this.series.name + ': <b>' + this.y + '</b><br/>';
} else {
var prePoint = this.series.data[preIndex];
var prePointY = prePoint.y;
var prePointX = prePoint.x;
var day = (this.x - prePointX) / 86400 / 1000;
var add = this.y - prePointY
add_str = '(' + add + ')';
return '<span style="color:' + this.series.color + '">\u25CF</span>' + this.series.name + ': <b>' + this.y + '</b> ' + add_str + '<br/>';
}
}
}
}
},
});
});
Highstock 具有数据分组功能 - 更多信息 here。
此功能可以更改 series.data 数组。相反,您可以使用 series.options.data(来自选项的原始数据)或禁用数据分组。
plotOptions: {
line: {
dataGrouping: {enabled: false},
我写了一个新的"pointFormatter"函数来显示2个点之间的差距,例如jsfiddle,但是当我将鼠标移动到第一个点“7.Jan”时,工具提示显示不正确,我在控制台中看到错误日志为 "TypeError: this.series.data[preIndex] is undefined"
但是,当我将 timeRange 更改为 "all" 时,将鼠标移动到第一个点不再导致任何错误,当我将 timeRange 更改回“1w”时,它是也行。
此外,如果我通过删除最后一个点将点数从 10 更改为 9,则不会再出现错误。
为什么?是什么导致了这个错误?
$(function() {
var chart = new Highcharts.StockChart({
chart: {
renderTo: 'container'
},
rangeSelector: {
allButtonsEnabled: true,
buttons: [{type: 'week',count: 1,text: '1w'},
{type: 'all',text: 'all'}
],
selected: 0
},
series: [{
name: 'USD',
data: [
[0,null],
[86400000,null],
[86400000*2,null],
[86400000*3,null],
[86400000*4,null],
[86400000*5,null],
[86400000*6,3],
[86400000*7,4],
[86400000*8,6],
[86400000*9,8],
]
}],
plotOptions: {
line: {
step: 'left',
connectNulls: true,
tooltip: {
pointFormatter: function () {
var preIndex = this.index - 1;
while (preIndex >= 0 && this.series.data[preIndex].y == null) {
preIndex--;
}
if (preIndex < 0) {
return '<span style="color:' + this.series.color + '">\u25CF</span>' + this.series.name + ': <b>' + this.y + '</b><br/>';
} else {
var prePoint = this.series.data[preIndex];
var prePointY = prePoint.y;
var prePointX = prePoint.x;
var day = (this.x - prePointX) / 86400 / 1000;
var add = this.y - prePointY
add_str = '(' + add + ')';
return '<span style="color:' + this.series.color + '">\u25CF</span>' + this.series.name + ': <b>' + this.y + '</b> ' + add_str + '<br/>';
}
}
}
}
},
});
});
Highstock 具有数据分组功能 - 更多信息 here。
此功能可以更改 series.data 数组。相反,您可以使用 series.options.data(来自选项的原始数据)或禁用数据分组。
plotOptions: {
line: {
dataGrouping: {enabled: false},