Inserting arbitrary HTML into a DocumentFragment

在前端开发中,我们经常需要将一段 HTML 插入到 DOM 中。但是,有些时候我们并不想直接将 HTML 字符串插入到页面中,而是先对其进行一些处理再插入。

这时候,DocumentFragment 就可以派上用场了。

什么是 DocumentFragment?

DocumentFragment 是一个轻量级的 DOM 节点对象,它可以包含其他的 DOM 节点,但是本身不会被渲染到页面上。

使用 DocumentFragment 对象可以提高 DOM 操作的性能,因为操作 DocumentFragment 不会引起页面的重新渲染,只有将其插入文档树中才会触发重排和重绘。

如何向 DocumentFragment 中插入 HTML?

要向 DocumentFragment 中插入 HTML,我们可以使用 innerHTML 属性或者 insertAdjacentHTML() 方法。

使用 innerHTML

----- -------- - ----------------------------------
------------------ - ---------- ------------

通过将 HTML 字符串赋值给 innerHTML 属性,就可以将 HTML 转换成 DOM 节点,并添加到 DocumentFragment 中。

使用 insertAdjacentHTML()

----- -------- - ----------------------------------
---------------------------------------- ---------- -------------

insertAdjacentHTML() 方法可以在指定位置插入 HTML,其中第一个参数表示插入的位置,可以取值为 beforebeginafterbeginbeforeendafterend,分别表示在当前节点前插入、在当前节点内部开头插入、在当前节点内部结尾插入和在当前节点后插入。

实例演示

下面是一个实例,演示如何使用 DocumentFragment 将一段 HTML 字符串插入到页面中:

----- ------- - ---------- ---------------------- -------------- -------------
----- -------- - ----------------------------------

-- ------- --- ------ ---- --- --- --
----- ------- - ------------------------------
----------------- - --------

-- ----- --- ----- ---------------- -
----- -------------------- -
  -----------------------------------------
-

-- - ---------------- ------
------------------------------------

上面的代码中,首先创建了一个临时的 div 元素,然后将 HTML 字符串赋值给其 innerHTML 属性,这样就得到了对应的 DOM 节点。接着,通过 appendChild() 方法将这些节点添加到 DocumentFragment 中,最后将 DocumentFragment 插入到页面中。

总结

使用 DocumentFragment 可以提高 DOM 操作的性能,避免页面的重排和重绘。要向 DocumentFragment 中插入 HTML,可以使用 innerHTML 属性或者 insertAdjacentHTML() 方法。在实际开发中,我们可以将多个 DOM 操作封装成一个函数,并使用 DocumentFragment 对象来优化这些操作的性能。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26165