В настоящее время я играю с JS и встроенным XPath.Я пытаюсь создать небольшой тестовый скрипт и обнаружил интересную ошибку, которую хотел бы понять.Я вызываю функцию оценки следующим образом:
var result = document.evaluate(
xpath,
document,
null,
XPathResult.ANY_TYPE);
В этом случае я получаю смешанные результаты.Строковые, логические и числовые типы не являются проблемой для обработки, но UNORDERED_NODE_ITERATOR_TYPE несколько сложен.
Моя функция для обработки результата выглядит так:
function nodes(iterator, parentNode) {
var cur = iterator.iterateNext(); // do not touch! altering this object causes a INVALID_STATE_ERR Exception
var myObj = cur == null || cur == undefined ? undefined : cur.cloneNode(true);
var count = 0;
while(myObj) {
parentNode.appendChild(myObj);
var = iterator.iterateNext().cloneNode(true);
}
}
Но когда я пытаюсь запуститьэта функция я получаю исключение INVALID_STATE_ERR.Но почему?Я клонирую объекты, и мой родительский узел - это новый созданный элементный узел.(document.createElement ('body'), который должен заменить исходный узел body в конце.
Нужно ли создавать элемент new-body другим способом? Это исключение выброшено, потому что новый элемент bodyприкреплен к текущему дереву документа? Как я могу это сделать, если я не могу использовать createElement?