通報

2011-07-01 1 views
0

可能性の重複:のMouseMoveイベントがreaisedれると
通報

Javascript infamous Loop problem?

変数iがALLセクタについて(= 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

1000回のように答えると、1001回答:イベントハンドラ関数はとなり、i変数を超えてが閉じます。つまり、すべての関数が同じ変数を参照するため、すべての関数が同じ値を持ちます。

ソリューション:

pieChart.Sectors[i].mousemove((function (myEvent) { 
     return function() { 
      var percent = (localData[i] * 100)/totalSum; 
      // do something with "myEvent" 
     }; 
}(event))); 
:新機能(-context)を導入
関連する問題