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事件冒泡传递(cancelBubble 、stopPropagation)
May 08 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
js动态生成form 并用ajax方式提交的实现方法
Sep 09 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
Ionic3实现图片瀑布流布局
Aug 09 Javascript
简单的网页广告特效实例
Aug 19 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
浅谈redux以及react-redux简单实现
Aug 28 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 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的根域名的代码
2011/03/23 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
JSON 数据格式详解
2017/09/13 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
python的flask框架难学吗
2020/07/31 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
关于python中remove的一些坑小结
2021/01/04 Python
美国购车网站:TrueCar
2016/10/19 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
集团薪酬管理制度
2014/01/13 职场文书
网络研修随笔感言
2014/02/17 职场文书
困难补助申请报告
2015/05/19 职场文书
仓库管理制度范本
2015/08/04 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python