在您遍历两个数据集后,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 对并返回要在鼠标事件上运行的实际函数的函数。也许有人有更好的解决方案......但它似乎工作。