javascript - 将 Html 从字符串解析为文档

标签 javascript html

我正在尝试将 Html 代码从字符串解析为文档,并开始一次将每个节点附加到真实的 dom。 经过一些研究,我遇到了这个 api:

DOMImplementation.createHTMLDocument()

效果很好,但是如果某个节点有后代,我需要先追加该节点,并且只有在它进入真实的 dom 之后我才应该开始追加它的后代,我想我可以使用

document.importNode(externalNode, deep);

将 deep 值设置为 false 以便仅复制父节点。 所以我的方法适用于这种情况,我应该如何保留附加节点的顺序,这样我就不会两次附加相同的节点? 还有一个问题是在某些情况下我需要将更多的 html 代码添加到特定位置(例如在某些 div 节点之后)并继续附加,知道如何正确地做到这一点吗?

最佳答案

您可以为此使用 DOMParser:

const parser = new DOMParser();
const doc = parser.parseFromString('<h1>Hello World</h1>', 'text/html');

document.body.appendChild(doc.documentElement);

但是如果你想多次附加相同的东西,使用模板会有更好的性能:

const template = document.createElement('template');
template.innerHTML = '<h1>Hello World</h1>';
const instance = template.cloneNode(true);
document.body.appendChild(instance.content);
const instance2 = template.cloneNode(true);
document.body.appendChild(instance2.content);

希望对你有帮助

关于javascript - 将 Html 从字符串解析为文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51872554/

相关文章:

javascript - 在 JSON 对象数组中搜索最大值

javascript - 如何使用 jQuery 从 textarea 中转义特殊字符?

JQuery 替换特殊字符

html - 如何使用 Bootstrap 在搜索输入字段内附加搜索按钮

javascript - jQuery 转换无法正常工作

javascript - 原生 javascript 中 dom 元素的更好定义

javascript - 将时间字符串从 hhmm 转换为 hh :mm format in javascript

javascript - 过滤对象数组时无限 $digest 循环

javascript - 需要添加触摸事件吗?

html - 将卡片内的两个按钮水平居中