交换节点的liveset中的节点

时间:2010-12-23 11:27:29

标签: javascript xml dom

这对我来说是一个挑战......

我在XML文档中有一组节点。我需要根据某个节点值对它们进行排序。因此,如果我遍历节点,然后节点值符合我的标准,我希望它结束​​。

问题是,当我交换时,当节点处于实时集中时,迭代指针当然会错过一个条目,因为appendChild正在实时集上运行。

这是我的代码到目前为止,但正如我所说,由于交换可能会错过一个条目:

for (var i=1; i <= nElem; i++)
{
    var node = getNode(dom,"//item[" + i + "]");
    var state = getNodeValue(dom,"//item[" + i + "]/state");
    if ((state != 'XX') && (i != nElem))
    {
        node.parentNode.appendChild(node);              
    }
}

我真正想要的是状态“XX”中的所有项目都位于顶部。

有人对此有一个明智的想法吗? 感谢

1 个答案:

答案 0 :(得分:1)

您可以使用array.sort()并传递自定义排序例程:

  • var nodes = getNode(dom, "//item");为您提供一系列项目
  • 接下来,从dom
  • 中删除nodes中的条目
  • 执行nodes.sort(sortfunction),其中sortfunction为sortfunction(a,b)
  • 实现sortfunction以便它返回
      如果a低于b ,则
    • -1
    • 0如果相等
    • 1如果a应高于b
  • nodes的条目添加回dom

我认为,这样做(只要我没有遗漏某些东西)。

相关问题