这对我来说是一个挑战......
我在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”中的所有项目都位于顶部。
有人对此有一个明智的想法吗? 感谢
答案 0 :(得分:1)
您可以使用array.sort()并传递自定义排序例程:
var nodes = getNode(dom, "//item");
为您提供一系列项目nodes
中的条目
nodes.sort(sortfunction)
,其中sortfunction为sortfunction(a,b)
sortfunction
以便它返回
nodes
的条目添加回dom 我认为,这样做(只要我没有遗漏某些东西)。