Это была проблема для меня ...обмен узлами в лифте узлов
У меня есть набор узлов в 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» находятся на вершине ,
У кого-нибудь есть разумная идея? Благодаря
Это лучшее, что я придумал. Проблема в том, что мои узлы не разделяют одного и того же родителя обязательно (в то время как они должны: это ошибка в нашем поставщике ... никаких шансов получить это изменение в ближайшее время). Поэтому я не могу просто удалить их, а затем вернуть их обратно ... но, возможно, я все равно сделаю это (EDIT: с помощью одного и того же родителя) – faboolous