Javascript错误:replaceChild - 找不到节点

时间:2015-02-24 08:52:18

标签: javascript

我使用以下代码交换两个元素数组。在最后一次迭代中,它抛出了NodeNotFound错误。

for (x=0; x<resultArr.length; x++) {    
        //allTR[x].swapNode(colArr[resultArr[x]])
        swapNodes(allTR[x],colArr[resultArr[x]]);
    }
    function swapNodes(item1,item2)
    {
        var itemtmp = item1.cloneNode(1);
        var parent = item1.parentNode;
        item2 = parent.replaceChild(itemtmp,item2);
        parent.replaceChild(item2,item1);
        parent.replaceChild(item1,itemtmp);
        itemtmp = null;
    }

当我调试throw firebug时,在最后一次迭代中,当我将鼠标悬停在第二行swapNodes函数上时,item1.parentNode显示为null。然后item2 = parent.replaceChild(itemtmp,item2)执行得很好。 下一行在控制台中抛出异常,但预期的功能运行良好。

我必须在没有此脚本错误的情况下完成工作。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我进行了以下代码更改,功能正常,没有脚本错误。

function swapNodes(a, b){
        var pa1= a.parentNode, pa2= b.parentNode, sib= b.nextSibling;
        if(sib=== a) sib= sib.nextSibling;
        pa1.replaceChild(b, a);
        if(sib) pa2.insertBefore(a, sib);
        else pa2.appendChild(a);
        return true;
    }