Dojo.Fadeout OnEndで複数のノードを削除します
質問
Dojo Fadeoutの後、チェックボックスで指定された複数のノードを削除しようとしています。ノードは単純なHTML TR要素です。以下を実行するボタンにオンクリックイベントがあります。
var tbody = dojo11.byId("resultBody1");
for (var k=0; k < selections.length; k++) {
var temp = selections[k];
dojo11.fadeOut( {
node:temp,
duration:1500,
onEnd: function() {
tbody.removeChild(temp);
}
}).play();
}
1つのノードでは正常に動作します。 2つ以上のノードを選択すると、選択したすべてのノードが一斉にフェードアウトしますが、最初の2つのエラーを報告しながら、最後に選択したノードをDOMツリーから削除するだけです。
FireBugコンソール出力:
exception in animation handler for: onEnd
Node was not found" code: "8
var _10b=null;\n
フェードアウト後に選択したすべてのノードをツリーから削除する方法はありますか?
解決
これは実際にはJavaScriptの閉鎖の問題です。ノードを削除するために呼び出しが行われるたびに、インデックス付きノードの現在の値を閉じることで固定されます。
for (var k=0; k < selections.length; k++) {
var temp = selections[k];
dojo11.fadeOut( {
node:temp,
duration: 1500,
onEnd: function(node) {
return function() {
tbody.removeChild(node);
}
}(temp)
}).play();
所属していません StackOverflow