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 Cookie读写删除操作的函数
Mar 02 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
JS实现HTML页面中动态显示当前时间完整示例
Jul 30 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
js针对图片加载失败的处理方法分析
Aug 24 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批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
vue实现扫码功能
2020/01/17 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
python文件操作整理汇总
2014/10/21 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
幼儿教师思想汇报
2014/01/10 职场文书
文案策划求职信
2014/03/18 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android
什么是Python装饰器?如何定义和使用?
2022/04/11 Python