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 相关文章推荐
学习ExtJS fit布局使用说明
Oct 08 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
javascript函数声明和函数表达式区别分析
Dec 02 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
Aug 15 Javascript
全面了解JavaScript对象进阶
Jul 19 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
基于node.js实现微信支付退款功能
Dec 19 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 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 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
Element input树型下拉框的实现代码
2018/12/21 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
详解Vue2的diff算法
2021/01/06 Vue.js
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python中DJANGO简单测试实例
2015/05/11 Python
python3实现点餐系统
2019/01/24 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
python opencv调用笔记本摄像头
2019/08/28 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
政协工作总结2015
2015/05/20 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
Nginx配置根据url参数重定向
2022/04/11 Servers