我在文档范围内工作,并试图将HTML插入其中。我们知道,文档范围没有InnerHTML设置器,因此我尝试将临时节点插入文档范围,并在使用insertAdjacentHTML
之后插入HTML。然后,我将删除临时元素,并带有我想要的DOM的片段。
示例:(出错是故意的)
var fragment = document.createDocumentFragment();
var temporaryElement = fragment.appendChild(document.createElement('div'));
// Before we move on.. I can see that the `temporaryElement` does have a parent
console.log(temporaryElement.parentNode.nodeType);
// The following throws an error...
temporaryElement.insertAdjacentHTML('afterend', '<div>Some crazy custom HTML..</div>');
fragment.removeChild(temporaryElement);
我可以清楚地看到临时元素有一个parenthnode,那么为什么要收到此错误?
您可以:
- 创建
<template>
元素, - 通过其
innerHTML
属性添加字符串内容, - 从其
content
属性中获取文档范围。
//Use a template
var template = document.createElement( 'template' )
template.innerHTML = '<td>Hello<td>World'
//Get the document fragment
var fragment = template.content
Row.appendChild( fragment )
<table>
<tr id=Row></tr>
</table>
,所以我很确定您想结束一个分析的div,对吗?因此,您会这样做。
var fragment = document.createElement("div");
fragment.innerHTML = "Some crazy custom HTML..";
//This will output exactly what your code should do
console.log(fragment);