J'écris une nouvelle fonction "pointFormatter" pour montrer l'écart entre 2 points, tels que jsfiddle, mais quand je déplace la souris au premier point "7.Jan", l'info-bulle ne s'affiche pas correctement, et j'ai vu errorlog Mais dans la console, "TypeError: this.series.data [preIndex] est indéfini"Erreur d'info-bulle uniquement lorsque le point num Highstock> 10, pourquoi?
Mais, quand je change le timeRange en "all", alors déplacer la souris au premier point ne provoque plus d'erreur, et quand je change le timeRange en "1w", c'est OK aussi. De plus, si je change le nombre num de 10 à 9 en supprimant le dernier point, alors l'erreur ne se produit plus.
Pourquoi? Quelle est la cause de cette erreur?
$(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/>';
}
}
}
}
},
});
});