当一个mousemove事件被重新启动时,变量i
等于所有扇区的最后一个值(在我的情况下= 4)。我可以在哪里存储i
的价值?
for (var i = 0; i < pieChart.Sectors.length; i++) {
pieChart.Sectors[i].mousemove(function (event) {
var percent = (localData[i] * 100) / totalSum;
pieChart.Popup(event.clientX, event.clientY, [percent, "% всего времени\n Было сделано", localData[i], "звонков"].join(' '));
});
}
答案 0 :(得分:1)
你需要一个关闭。请看这里的一个很好的解释:http://www.mennovanslooten.nl/blog/post/62
我将很快发布您修改的代码。
答案 1 :(得分:1)
回答了一千次,1001回答:您的事件处理函数将关闭而不是i
变量。这意味着,所有函数都引用相同的变量,因此它们都具有相同的值。
解决方案:引入一个新函数(-context):
pieChart.Sectors[i].mousemove((function (myEvent) {
return function() {
var percent = (localData[i] * 100) / totalSum;
// do something with "myEvent"
};
}(event)));
答案 2 :(得分:0)
检查变量$i
之前是否已被声明为全局变量。
您甚至可以随时使用alert(window.i);
或console.log(window.i);
进行检查。