最近在去除系统中的jquery的时候,发现有个地方使用jquery将字符串变成了dom节点,然后插入到了body标签中。现在,我需要使用原生JS完成这项功能。
解决方案
先创建一个dom元素,将字符串以HTML的形式插入到dom节点中,然后导出dom元素的子节点。
// 返回元素列表
function parseDom(arg) {
const objE = document.createElement('form');
objE.innerHTML = arg;
return objE.childNodes;
}
需要注意的是,这个方法导出的是一个dom节点的列表(数组),所以想要获取指定元素,需要使用数组取值的方法获取。
例如:
const inputString = '<input />';
const inputElement = parseDom(inputString)[0];
当然,如果你的使用场景只有可能是插入一项元素,那么你完全可以让 parseDom
在导出的时候直接返回元素列表的第一项。
// 只返回一项元素
function parseDom(arg) {
const objE = document.createElement('form');
objE.innerHTML = arg;
return objE.childNodes[0];
}
OK,到这里已经完成了功能的一半了,剩下的一半是将dom节点插入到body中。查看有几种方式可以插入dom节点以及它们的区别参考这篇博客:原生JS向body尾部插入dom节点.