没有合适的资源?快使用搜索试试~ 我知道了~
createElement与createDocumentFragment的点点区别小结
0 下载量 5 浏览量
2020-12-08
22:51:47
上传
评论
收藏 47KB PDF 举报
温馨提示
网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起的效率问题,比如: 代码如下: var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”10”]; for(var i=0;i<arrText.length;i++){ var op=document.createElement(“P”); var oText=document.createTextNode(arrText[i]); op.appendChild(oText); document
资源推荐
资源详情
资源评论
createElement与与createDocumentFragment的点点区别小结的点点区别小结
网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起
的效率问题,比如:
代码如下:
var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”10”];
for(var i=0;i<arrText.length;i++){
var op=document.createElement(“P”);
var oText=document.createTextNode(arrText[i]);
op.appendChild(oText);
document.body.appendChild(op);
}
var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”10”];
var oFrag=document.createDocumentFragment();
for(var i=0;i<arrText.length;i++){
var op=document.createElement(“P”);
var oText=document.createTextNode(arrText[i]);
op.appendChild(oText);
oFrag.appendChild(op);
}
document.body.appendChild(oFrag);
(声明:这是我google的第一个例子,并不代表对原作者有任何意见,原文地址
http://www.cnitblog.com/asfman/articles/32614.html)
这个说法并没有错,但是并不严谨,因为像这种用法,主要还是用在目标节点是已存在并且有一部分内容的情况下,比如上面
例子中的body元素,如果目标节点并不存在或者为空,完全可以用createElement创建一个相同的元素,操作之后再使用一次
appendChild或者replaceChild来达到相同的目的,这样也不存在重复刷新的问题。
虽说我平时都是把两者混着用,但是还是得明白两者之间的一点区别:
第一:
createElement创建的元素可以使用innerHTML,createDocumentFragment创建的元素使用innerHTML并不能达到预期修改文
档内容的效果,只是作为一个属性而已。两者的节点类型完全不同,并且createDocumentFragment创建的元素在文档中没有
对应的标记,因此在页面上只能用js中访问到。
demo:
代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/>
<title></title>
<style type=”text/css”>
#outer{ height: 200px; border: 1px solid #006400;}
</style>
</head>
<body>
<div id=”outer”>
</div>
<input type=”button” value=”createElement” id=”btn_1″/><input type=”button” value=”createDocumentFragment”
id=”btn_2″/>
<script type=”text/javascript”>
var fragment_1 = document.createDocumentFragment();
fragment_1.innerHTML = ‘<p>我是一个粉刷匠</p>’;
document.body.appendChild(fragment_1);
var fragment_2 = document.createElement(‘p’);
fragment_2.innerHTML = ‘粉刷本领强’;
document.body.appendChild(fragment_2);
</script>
</body>
</html>
第二:另一个最主要的区别就是createElement创建的元素可以重复操作,添加之后就算从文档里面移除依旧归文档所有,可
以继续操作,但是createDocumentFragment创建的元素是一次性的,添加之后再就不能操作了(说明:这里的添加并不是添
加了新创建的片段,因为上面说过,新创建的片段在文档内是没有对应的标签的,这里添加的是片段的所有子节点)。
一个对比的例子:
代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
资源评论
weixin_38621630
- 粉丝: 3
- 资源: 914
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新版FPGA课程大纲,芯片硬件开发用的大纲
- ROS2下OpenCV识别物体区域和视频捕捉的样例
- STM32-EMBPI.PDF
- Font Awesome图标字体库提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用CSS的样式
- Bluefield 2固件镜像版本,fw-MBF2M345A-VENOT-ES-Ax-24.40.1000.bin
- 雪颜奇迹幻白双重莹白焕采霜50ML-1016-FA.rar
- Qt的QDOCK高级用法源码,包含linux和windows版本,从开源库下载
- OC-FileManage
- coredns-v1.10.1.tar、flannel-v0.26.1.tar、flannel-cni-plugin-v1.5.1-flannel2.tar
- 美宝莲双头眉笔Bundle pack 卸妆液 1211FA-1.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功