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的eval()中使用函数的进一步讨论
Jul 26 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
JS实现点击事件统计的简单实例
Jul 10 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
小谈angular ng deploy的实现
Apr 07 Javascript
微信小程序实现电影App导航和轮播
Nov 30 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
极典R601SW收音机
2021/03/02 无线电
PHP中for与foreach的区别分析
2011/03/09 PHP
php&amp;mysql 日期操作小记
2012/02/27 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
js创建对象的方式总结
2015/01/10 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
python查询mysql,返回json的实例
2018/03/26 Python
详解python3中的真值测试
2018/08/13 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
用 Python 制作地球仪的方法
2020/04/24 Python
python可迭代对象去重实例
2020/05/15 Python
Python中格式化字符串的四种实现
2020/05/26 Python
区分python中的进程与线程
2020/08/13 Python
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
工作违纪检讨书
2014/02/17 职场文书
学习张林森心得体会
2014/09/10 职场文书
见义勇为事迹材料
2014/12/24 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
python实现剪贴板的操作
2021/07/01 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python