gpt4 book ai didi

javascript - 如何迭代 ORDERED_NODE_SNAPSHOT_TYPE 类型的 javascript XPathResult

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:34 25 4
gpt4 key购买 nike

我需要使用 javascript 获取 XPathResult 并迭代它,克隆结果的每个节点。最初,我尝试了以下操作,结果为 ORDERED_NODE_ITERATOR_TYPE:

childNodesXPath = '//div[@id="'+subcat_id+'" and @parentid="'+subcat_parent_id+'"]';    
subcat_child_nodes = document.evaluate(childNodesXPath, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
while (next_child_node = subcat_child_nodes.iterateNext()) {
new_child_node = next_child_node.cloneNode(true);
new_child_node.setAttribute('parentid', target_id);
new_child_node.setAttribute('grandparentid', target_parentid);
new_length = new_subcat_child_nodes.push(new_child_node);
}

当然,我发现克隆第一个节点后迭代器就失效了,因为 DOM 发生了变化,所以我尝试了这个,结果为 ORDERED_NODE_SNAPSHOT_TYPE:

childNodesXPath = '//div[@id="'+subcat_id+'" and @parentid="'+subcat_parent_id+'"]';
subcat_child_nodes = document.evaluate(childNodesXPath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (i=0; i<subcat_child_nodes.length; i++) {
new_child_node = subcat_child_nodes[i].cloneNode(true);
new_child_node.setAttribute('parentid', target_id);
new_child_node.setAttribute('grandparentid', target_parentid);
new_length = new_subcat_child_nodes.push(new_child_node);
}

这不起作用,因为 XPathResult 对象没有长度属性。我还尝试了 subcat_child_nodes.forEach() ,但这不起作用, iterateNext() 也不起作用。

如何以允许我克隆每个节点的方式迭代 ORDERED_NODE_SNAPSHOT_TYPE 类型的 XPathResult?如果这是不可能的,是否有办法克隆作为节点列表的整个 XPathResult?

最佳答案

所以,以防万一其他人正在寻找我上面问题的答案,Jaromanda 的 answer评论中向我指出了 reference resource (archive)这就是我最终使用的。

subcat_child_nodes = document.evaluate(childNodesXPath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (i=0; i<subcat_child_nodes.snapshotLength; i++) {
new_child_node = subcat_child_nodes.snapshotItem(i).cloneNode(true);
new_child_node.setAttribute('parentid', target_id);
new_child_node.setAttribute('grandparentid', target_parentid);
new_length = new_subcat_child_nodes.push(new_child_node);
}

关于javascript - 如何迭代 ORDERED_NODE_SNAPSHOT_TYPE 类型的 javascript XPathResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com