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 相关文章推荐
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
iframe 上下滚动条如何默认在下方实现原理
Dec 10 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
js对象的复制继承实例
Jan 10 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
Mar 13 Javascript
jQuery实现图片渐入渐出切换展示效果
Aug 15 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
利用vue.js实现被选中状态的改变方法
Feb 08 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
node后端服务保活的实现
Nov 10 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
python脚本爬取字体文件的实现方法
2017/04/29 Python
python之PyMongo使用总结
2017/05/26 Python
django实现用户登陆功能详解
2017/12/11 Python
python re模块findall()函数实例解析
2018/01/19 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python实现名片管理系统
2020/02/14 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
澳大利亚家具商店:Freedom
2020/12/17 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
销售人员中英文自荐信
2013/09/22 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
企业管理标语
2014/06/10 职场文书
优秀教师个人材料
2014/12/15 职场文书
运动会3000米加油稿
2015/07/21 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书