gpt4 book ai didi

javascript - 创建元素节点而不附加

转载 作者:行者123 更新时间:2023-11-30 19:42:36 25 4
gpt4 key购买 nike

在 Javascript 中我想知道如果我创建一个元素而不附加到子元素会发生什么?另外,如果我从不同的文档创建元素并将其添加到新文档中怎么办?

  var text, parser, xmlDoc;

text = "<bookstore></bookstore>";
var text2="<test/>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
xmlDoc2 = parser.parseFromString(text2,"text/xml");

var newElement=xmlDoc2.createElement("hello");

xmlDoc.getElementsByTagName("bookstore")[0].appendChild(newElement);
var oSerializer = new XMLSerializer();
var sXML = oSerializer.serializeToString(xmlDoc);
console.log(sXML);

我找不到为什么我需要使用相同的文档来创建元素

最佳答案

您不需要将元素附加到用于创建它的同一个文档。

createElement()创建一个由创建它的文档拥有的元素,但不给它在文档中的任何位置。如果你愿意,你当然可以创建一个元素而不附加它。 appendChild()是给元素在文档中的位置的一种方法。

如果您正在处理多个文档(如您的代码示例中所示),您可以创建一个文档拥有的元素并将其附加到另一个文档,这将简单地从原始文档所有者中删除它,使另一个文档成为所有者,并在其他文档中给它一个位置。

例如:

const astring = '<adoc></adoc>';
const bstring = '<bdoc></bdoc>';
const parser = new DOMParser();
const axml = parser.parseFromString(astring, 'application/xml');
const bxml = parser.parseFromString(bstring, 'application/xml');
const elem = axml.createElement('elem');
console.log(elem.ownerDocument.documentElement.tagName);
// adoc

bxml.querySelector('bdoc').appendChild(elem);
console.log(elem.ownerDocument.documentElement.tagName);
// bdoc

关于javascript - 创建元素节点而不附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55244274/

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