为什么没有document.createHTMLNode()?

Mar*_*tin 9 javascript dom createtextnode

我想在当前范围(W3C范围)插入html.

我想我必须使用insertNode方法.它适用于文本.

例:

var node = document.createTextNode("some text");
range.insertNode(node);
Run Code Online (Sandbox Code Playgroud)

问题是我想插入html(可能类似于"<h1> test </ h1>更多文本").而且没有createHTMLNode().

我尝试使用createElement('div'),给它一个id,并将html作为innerHTML,然后在插入后尝试用它的nodeValue替换它,但它给了我DOM错误.

有没有办法做到这一点,而不是在我想要插入的html周围获得额外的html元素?

Que*_*tin 9

因为"<h1>test</h1>some more text"由一个HTML元素和两个文本组成.它不是一个节点.

如果要插入HTML,请使用innerHTML.

有没有办法做到这一点,而不是在我想要插入的html周围获得额外的html元素?

创建一个元素(不要将其添加到文档中).设置其innerHTML.然后通过循环移动其所有子节点foo.childNodes.


Tim*_*own 5

在某些浏览器(特别是不是任何版本的 IE)中,Range对象最初具有非标准的createContextualFragment()可能会有所帮助。IE 等浏览器的未来版本很可能会实现这一点,因为它已经标准化了

下面是一个例子:

var frag = range.createContextualFragment("<h1>test</h1>some more text");
range.insertNode(frag);
Run Code Online (Sandbox Code Playgroud)