首页 > 解决方案 > Javascript - .append 方法有问题

问题描述

我对 .append 方法有疑问。我有一个 XML,我想在每个“语言环境”节点中添加一个节点。这是我的代码:

x = xmlDoc.getElementsByTagName("locale")
newElement = xmlDoc.createElement("version_whats_new");
x[0].append(newElement)
console.log(xmlDoc.getElementsByTagName("locale")[0])
x[1].append(newElement)
console.log(xmlDoc.getElementsByTagName("locale")[1])
x[2].append(newElement)
console.log(xmlDoc.getElementsByTagName("locale")[2])
x[3].append(newElement)
console.log(xmlDoc.getElementsByTagName("locale")[3])

(我知道我可以使用循环,但这只是为了更好地理解)

在这些行之后,“version_whats_new”节点出现在节点“locale”[3] 中,但不在其他节点中。

让我们想象一下我的代码变成:

x = xmlDoc.getElementsByTagName("locale")
newElement = xmlDoc.createElement("version_whats_new");
x[0].append(newElement)
console.log(xmlDoc.getElementsByTagName("locale")[0])
x[1].append(newElement)
console.log(xmlDoc.getElementsByTagName("locale")[1])
x[2].append(newElement)

“version_whats_new”节点将出现在节点“locale”[1] 中,但不在 [0] 中

我在几个小时内寻找解决方案但没有任何成功...... :(

谢谢

标签: javascriptxml

解决方案


一个元素不能同时存在于多个地方。因此,如果它已经是文档的一部分,并且您将其附加到其他地方,那么它必须从之前的任何地方删除。

您需要createElement多次调用(或使用),以便每次都cloneNode可以附加不同的元素。


推荐阅读