これは、ここで見つかった問題と同様の問題のようですが、提供されている解決策を理解していないことを残念に思います。 HTML5 の複数のドロップ イベント
Ext JS ライブラリを使用して、1 つのドラッグ ソースから複数のドロップ ターゲットをセットアップしようとしています。notifyEnter のクロージャーを定義すると、常に変数 "i" を使用して警告するように見えます (デバッグ目的で警告するように変更しました)。Javaのバックグラウンドから来た私の直感は、ループ内で最終変数を定義し、クロージャーを定義する前にiまたはplayerLocationPanelのいずれかを割り当てることでこれを解決することですが、それは有効な解決策ではないようです.
これは 8 ~ 10 年ぶりの Javascript への取り組みです。ご協力をお願いいたします。
/****
* Setup Drop Targets
***/
var playerPanelDropTargets = new Array();
var dropTargetEls = new Array();
for(var i=0;i<=5; i++){
dropTargetEls[i] = playerLocationPanels[i].body.dom;
playerPanelDropTargets[i] = Ext.create('Ext.dd.DropTarget', dropTargetEls[i], {
ddGroup: 'GridExample',
notifyEnter: function(ddSource, e, date){
// The problem here is that it always calls, specifically playerLocationPanels[i]
// and i is always going to be 1 more than the top of the loop.
//playerLocationPanels[i].body.stopAnimation();
//playerLocationPanels[i].body.highlight();
alert(i);
}
});
}