JavaScript 用cloneNode方法克隆节点的代码


Posted in Javascript onOctober 15, 2012

很多时候我们会用for 来生成多个结构相同的节点结构,这样我们需要写很多createElement、setAttribute、appendChild 等代码。

但其实我们只需要有一个html 的模板,就可以用cloneNode 方法对已有的节点进行克隆,包括其子节点。
以下是cloneNode 方法原型:

newElement oldElement.cloneNode(bool deep);

这个方法只有一个参数deep,布尔值,如果为true,则克隆oldElement 这个及其子节点,否则只可能这个节点本身。

返回值就是一个克隆的节点newElement。

以下是测试代码,test.htm 和test.js 文件。

<!-- test.htm --> 
<html> 
<head> 
<title>Test of cloneNode Method</title> 
<script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
<div id="main"> 
<div id="div-0"> 
<span>Cloud018 said, </span> 
<span>"Hello World!!!"</span> 
</div> 
</div> 
</body> 
</html>

Code
// test.js 
window.onload = function () { 
var sourceNode = document.getElementById("div-0"); // 获得被克隆的节点对象 
for (var i = 1; i < 5; i++) { 
var clonedNode = sourceNode.cloneNode(true); // 克隆节点 
clonedNode.setAttribute("id", "div-" + i); // 修改一下id 值,避免id 重复 
sourceNode.parentNode.appendChild(clonedNode); // 在父节点插入克隆的节点 
} 
}

网页加载的结果如下:
JavaScript 用cloneNode方法克隆节点的代码
用Google Chrome 的开发人员工具可以看出,div-0 的节点结构都被复制了。
JavaScript 用cloneNode方法克隆节点的代码
而当把cloneNode 的deep 参数设为false 的时候,仅仅div-0 这个节点本身被克隆,而他的子节点(即其内容)是没有被复制的。
var clonedNode = sourceNode.cloneNode(false);

JavaScript 用cloneNode方法克隆节点的代码
Javascript 相关文章推荐
IE和Firefox下javascript的兼容写法小结
Dec 10 Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 Javascript
Jquery的each里用return true或false代替break或continue
May 21 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
基于javascript实现按圆形排列DIV元素(二)
Dec 02 Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
Aug 19 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
js实现div色块拖动录制
Jan 16 Javascript
VueJS实现用户管理系统
May 29 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
Oct 15 #Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 #Javascript
JS自动缩小超出大小的图片
Oct 12 #Javascript
文本框input聚焦失焦样式实现代码
Oct 12 #Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 #Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 #Javascript
jquery聚焦文本框与扩展文本框聚焦方法
Oct 12 #Javascript
You might like
PHP变量内存分配问题记录整理
2013/11/27 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python中的自省(反射)详解
2015/06/02 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
如何保障Web服务器安全
2014/05/05 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
实习协议书范本
2014/04/22 职场文书
青年志愿者活动总结
2014/04/26 职场文书
无毒社区工作方案
2014/05/23 职场文书
工程项目经理任命书
2014/06/05 职场文书
护理学专业求职信
2014/06/29 职场文书
单位委托书怎么写
2014/09/21 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
redis实现的四种常见限流策略
2021/06/18 Redis