両方のデータ セットをループした後、i = 2 および k = 1 になります。したがって、マウス イベントは常に i=2 および k=1 を使用してデータ ポイントにアクセスしようとしますが、これはもちろん範囲外です。このフィドルを参照してください: http://jsfiddle.net/bLvfS/1/
for (var i = 0; i < chartObj.series.length; i++) {
for (var k = 0; k < chartObj.series[i].data.length; k++) {
var onmouseover = function(u, j) {
return function() {chartObj.series[u].data[j].setState('hover');};
}
var onmouseout = function(u, j) {
return function() {chartObj.series[u].data[j].setState();};
}
chartObj.series[i].data[k].dataLabel.on("mouseover", onmouseover(i,k));
chartObj.series[i].data[k].dataLabel.on("mouseout", onmouseout(i,k));
}
}
現在の i,k ペアを渡され、マウス イベントで実行する実際の関数を返す関数を追加しました。誰かがより良い解決策を持っているかもしれません...しかし、それはうまくいくようです。