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 相关文章推荐
由prototype_1.3.1进入javascript殿堂-类的初探
Nov 06 Javascript
Firebug 字幕文件JSON地址获取代码
Oct 28 Javascript
JavaScript prototype对象的属性说明
Mar 13 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
jQuery列表检索功能实现代码
Jul 17 jQuery
微信小程序版翻牌小游戏
Jan 26 Javascript
jQuery中元素选择器(element)简单用法示例
May 14 jQuery
详解Vue一个案例引发「内容分发slot」的最全总结
Dec 02 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
jQuery实现本地存储
Dec 22 jQuery
基于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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
python 杀死自身进程的实现方法
2019/07/01 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
python 5个顶级异步框架推荐
2020/09/09 Python
Linux的主要特性
2016/09/03 面试题
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
大学生求职推荐信
2013/11/27 职场文书
教师实习自我鉴定
2013/12/13 职场文书
数控机床专业自荐信
2014/05/19 职场文书
七一党日活动总结
2014/07/08 职场文书
迟到检讨书范文
2015/01/27 职场文书
导游词之神仙居景区
2019/11/15 职场文书