js DocumentFragment 文档碎片
博客专区 > appleZ 的博客 > 博客详情
js DocumentFragment 文档碎片
appleZ 发表于3年前
js DocumentFragment 文档碎片
  • 发表于 3年前
  • 阅读 27
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: js DocumentFragment 文档碎片

在所有节点类型中,只有DocumentFragment在文档中没有对应的标记。DOM规定文档片段(documentfragment)是一种”轻量级“的文档,可以包含和控制节点,但不会像完整的文档那样占用额外资源。DocumentFragment节点具有下列特征:

  • nodeType的值为11

  • nodeName的值为“#document-fragment”

  • nodeValue的值为null

  • parentNode的值为null

  • 子节点可以是Element、ProcessingInstruction、Comment、Text、CDATASection或EntityReference

虽然不能把文档片段直接添加到文档中,但可以将它作为一个“仓库”来使用,即可以在里面保存将来可能会添加到文档中的节点。要创建文档片段,可以使用document.createDocumentFragment()方法,如下所示:

var fragment = document.createDocumentFragment();

文档片段继承了Node的所有方法,通常用于执行那些针对文档的DOM操作。如果将文档中的节点添加到文档片段中,就会从文档树中再看到该节点。添加到文档片段中的新节点同样也不属于文档树。可以通过appendChild()或insertBefore()将文档片段中内容添加到文档中。在将文档片段作为参数传递给这两个方法时,实际上只会将文档片段的所有子节点添加到相应的位置上;文档片段本身永远不会成为文档树的一部分。来看下面的HTML示例代码:

<ul id="myList"></ul>

假设我们想为这个<ul>元素添加3个列表项。如果逐个地添加列表项,将会导致浏览器反复渲染(呈现)新信息。为避免这个问题,可以像下面这样使用一个文档片段来保存创建的列表项,然后一次性将它们添加到文档中:

var fragment = document.createDocumentFragment();
var ul = document.getElementById("myList");
var li = null;
for (var i = 0; i < 3; i++) {
    li = document.createElement("li");    
    li.appendChild(document.createTextNode("Item" + (i + 1)));    
    fragment.appendChild(li);
}
ul.appendChild(fragment);

在这个例子中,我们先创建一个文档片段并取得了对<ul>元素的引用。然后,通过for循环创建3个列表项,并通过文本表示它们的顺序。为此,需要分别创建<li>元素、创建文本节点,在把文本节点添加到<li>元素。接着使用appendChild将<li>元素添加到文档片段中。循环结束后,再调用appendChild()并传入文档片段,将所有列表项添加到<ul>元素中。此时,文档片段的所有子节点被删除并转移到了<ul>元素中。

共有 人打赏支持
粉丝 2
博文 25
码字总数 9774
×
appleZ
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: