0

我试图在 dojo 淡出后删除由复选框指定的多个节点。节点是简单的 HTML tr 元素。执行以下操作的按钮上有一个 onclick 事件。

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();
}    

它适用于一个节点。如果我选择两个或多个节点,它会同时淡出所有选定的节点,但只会从 DOM 树中删除最后一个选定的节点,同时报告前两个节点的错误。

Firebug 控制台输出:

exception in animation handler for: onEnd
Node was not found" code: "8
var _10b=null;\n

任何想法如何在淡出后从树中删除所有选定的节点?

4

1 回答 1

1

这实际上是一个 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();       
于 2009-12-15T16:31:44.177 回答