我使用以下代码交换两个元素数组。在最后一次迭代中,它抛出了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)执行得很好。 下一行在控制台中抛出异常,但预期的功能运行良好。
我必须在没有此脚本错误的情况下完成工作。请帮我解决这个问题。
答案 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;
}