2011-07-01 46 views
0

可能重複:
Javascript infamous Loop problem?問題的環路

當鼠標移動事件被reaised可變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

檢查您的變量$i之前是否已被聲明爲全局變量。

您甚至可以在任何時候用alert(window.i);console.log(window.i);進行檢查。

1

回答像千次,1001答案:您的事件處理函數將關閉通過i變量。這意味着,所有函數都引用相同的變量,因此它們都具有相同的值。

解決方案:引入一個新的功能(-context):

pieChart.Sectors[i].mousemove((function (myEvent) { 
     return function() { 
      var percent = (localData[i] * 100)/totalSum; 
      // do something with "myEvent" 
     }; 
}(event)));