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 相关文章推荐
JavaScript 学习笔记(十一)
Jan 19 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
jQuery学习笔记之2个小技巧
Jan 19 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
JQuery 动态生成Table表格实例代码
Dec 02 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 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实现的Timer页面运行时间监测类
2014/09/24 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
办公室文书岗位职责
2013/12/16 职场文书
大学生实习思想汇报
2014/01/12 职场文书
工会换届选举方案
2014/05/21 职场文书
中学教师师德承诺书
2014/05/23 职场文书
人力资源求职信
2014/05/25 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书