documentFragment是一个保存多个element的容器对象(保存在内存)当更新其中的一个或者多个element时,页面不会更新。只有当documentFragment容器中保存的所有element更新后再将其插入到页面中才能更新页面。
documentFragment用来批量更新
列如将ul里面的li取出放到documentFragment,更新完毕后再将其插入到ul,一共有以下四步骤:

  1. 创建documentFragment对象fragment
  2. 取出ul中的所有子节点并保存到fragment
  3. 更新fragment中的所有节点(li的内容)
  4. 将fragment插入到ul
//初始显示test1
<div id="test"><li>test1</li><li>test1</li><li>test1</li></div>
const ul = document.getElementById('test')
// 创建fragment对象
const fragment = document.createDocumentFragment()
//  取出ul中的所有子节点并保存到fragment
let child;
while(child=ul.firstChild) {fragment.appendChild(child)
}
//更新fragment中的所有节点(li的内容)
Array.prototype.slice.call(fragment.childNodes).forEach(node => {if (node.nodeType===1) {//取得元素节点node.textContent = 'test2' //重新赋值为test2}
})
// 将fragment插入到ul
ul.appendChild(fragment)

在fragment插入到ul之前页面不会更新,documentFragment用来批量更新元素

转载于:https://www.cnblogs.com/yuanchao-blog/p/10847417.html

documentFragment深入理解相关推荐

  1. javascrpt知识要点梳理——知识清单

    写在前面: 这篇文章是我在学习<javascript高级程序设计(第三版)>时随书所做的笔记,由于使用word记录的笔记,转到markdown编辑器里有点吃力,所以文章排版可能会有点问题. ...

  2. 关于documentFrgament 文档片段的简单理解

    documentFragment 即文档片段,也可以理解为是一个暂时储存数据的仓库. 好处: 可以将多行代码一次性的放到文档中,减少页面的渲染次数,用于提高 创建时的性能问题.使用不多,可做了解 使用 ...

  3. 理解Shadow DOM

    1. 什么是Shadow DOM? Shadow DOM 如果按照英文翻译的话可以理解为 影子DOM, 何为影子DOM呢?可以理解为一般情况下使用肉眼看不到的DOM结构,那如果一般情况下看不到的话,那 ...

  4. 记一次对vue双向绑定的理解

    之前有看过一次vue双向绑定原理实现相关的博客,看得似懂非懂的,然后也就搁浅了. 昨天脑海里又突然燃起了要不这块搞懂的冲动,于是乎又开始了一轮博客轰炸,综合研究了多位大神写得关于vue双向绑定的实现原 ...

  5. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

  6. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  7. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  8. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  9. 智能文档理解:通用文档预训练模型

    预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...

最新文章

  1. 怎样在javascript函数中将变量传递给服务端脚本程序?
  2. STM8单片机串口驱动的深度解析
  3. JqueryEasyUI 解决IE下datagrid无法刷新的问题
  4. Oracle之索引、权限
  5. js压缩图片_Web 性能优化: 图片优化让网站大小减少 62%
  6. BZOJ 1997: [Hnoi2010]Planar( 2sat )
  7. python 写入文件编码_使用Python写入文本文件时的编码问题
  8. devc++鼠标变成了光标_游戏鼠标选购避坑指南 教你如何轻松选择适合自己的鼠标...
  9. sql join 示例_SQL CROSS JOIN与示例
  10. 好用的在线 java 编译网站,编辑器(亲测)
  11. 【工具】Movielens数据集详细介绍
  12. m 序列性质的简单证明
  13. 昆明市计算机专业职称评定,云南省专业技术人员评聘专业技术职务实施计算机职称考试的通知...
  14. NO_PROXY is not set
  15. 第21届国际足联世界杯观后感
  16. 金融科技B端市场群雄争霸 PATH四家各出奇招
  17. 计算机操作系统经典进程同步问题
  18. c语言数字1 9转换英文,C语言提问:将一个月份数字转换成月份的英文名称
  19. BlueTooth: 蓝牙Profile的概念和常见种类
  20. IPhone触摸设计:拇指操作的“热区与死角”

热门文章

  1. Java软件项目开发命名规范_命名规则
  2. phpexcel 日期 时分秒_thinkPHP+PHPExcel实现读取文件日期的方法含时分秒
  3. android 指针是什么意思,Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(3)...
  4. 计算机编程试讲教案,2016教师资格证面试试讲高中信息技术教案:QBASIC分支结构程序...
  5. C语言的特点与创建的基本步骤是什么
  6. C语言函数返回1和返回0究竟哪个好?
  7. status_code想要得到302却得到200_中考200天倒计时!教你高效规划!抓紧抢报预留座位!...
  8. c程序怎么改为java程序_如何将Java程序的入口点更改为C签名?
  9. 发动机冷启动和热启动的区别_「牛车实验室」AGM自动启停蓄电池解读 和普通蓄电池到底有什么区别...
  10. python程序设计之文件_Python程序设计之文件操作(2)