文档章节

js DocumentFragment 文档碎片

appleZ
 appleZ
发布于 2015/04/14 11:24
字数 642
阅读 30
收藏 0

在所有节点类型中,只有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>元素中。

本文转载自:http://www.w3cmm.com/dom/documentfragment.html

共有 人打赏支持
上一篇: css button 圆角
下一篇: js cookie片段记录
appleZ
粉丝 1
博文 38
码字总数 9774
作品 0
深圳
私信 提问
JavaScript DocumentFragment(文档碎片)

JavaScript DocumentFragment(文档碎片) documentFragment对象:无父窗口的文档对象(或者叫文档碎片) 作用:javascript在操作DOM时都会重新加载整个文档的DOM为了减少DOM操作可以在操作DOM...

freedonn
2014/10/18
69
0
JavaScriptTips使用DocumentFragment加快DOM渲染速度

大家在使用JavaScript的时候,DOM操作是最平常不过的了, 随着Web前端技术的发展,我们越来越多的使用JS来操作DOM元素,比如通过ajax请求获取到数据,然后更新页面上的元素,一般情况下,这种...

fuck_zhou
2011/12/20
0
0
javascript之DOM操作

一、document.getElementById() 根据Id获取元素节点 <div id="div1"> <p id="p1"> 我是第一个P</p> <p id="p2"> 我是第二个P</p> </div> window.onload = function () { var str = document......

烹饪师
2015/08/19
0
0
将HTML字符转换为DOM节点并动态添加到文档中

将HTML字符转换为DOM节点并动态添加到文档中 将字符串动态转换为DOM节点,在开发中经常遇到,尤其在模板引擎中更是不可或缺的技术。 字符串转换为DOM节点本身并不难,本篇文章主要涉及两个...

玄魂
08/18
0
0
白鹭引擎 5.1.9 调整 Facebook Instant Games 接入方式

上周三,Facebook 推出一系列隐私保护新措施,旨在让用户更容易地查看和访问该社交网络对他们所掌握的数据,并且根据自己的需求进行相应的调整。随着 Facebook 隐私政策的调整,原有的 Inst...

白鹭科技
04/04
976
1

没有更多内容

加载失败,请刷新页面

加载更多

正则表达式匹配不包含

^((?!xxx).)*$

安小乐
9分钟前
1
0
python Windows tkinter应用开发3 列出目录的所有文件

在本章中,我们将编写程序来执行此操作。 1)选择文件夹。 2)在UI的标签部分打印该文件夹中的所有文件名(带文件扩展名)。 首先,修改selectFile函数以打开文件夹。主文件如下: from tki...

python测试开发人工智能安全
11分钟前
1
0
使用Laya引擎开发微信小游戏(上)

  使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏。      img      作者:马晓东,腾讯前端高级工程师。      微信小游戏的推出也快一年时间了,...

SEOwhywhy
16分钟前
1
0
react程序开发问题记录

1、webpack.config.dev.js文件的publicpath配置

teamlog
28分钟前
2
0
javascript 值转换为布尔值

任意javascript 的值都可以转换为布尔值。 特别是在 if() 等判断中使用的时候: 下面这些值会被转换为 false undefined , null , 0 , -0 , NaN , "" 空字符串 来自 JavaScript 权威指南 书籍...

之渊
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部