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中两个感叹号的作用说明
Dec 28 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
javascript实现计时器的简单方法
Feb 21 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
关于react-router的几种配置方式详解
Jul 24 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
Aug 17 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
Aug 31 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
使用Vue开发动态刷新Echarts组件的教程详解
Mar 22 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
Nov 13 Javascript
解决vue项目 build之后资源文件找不到的问题
Sep 12 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操作excel文件 基于phpexcel
2010/07/02 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Python连接phoenix的方法示例
2017/09/29 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
python集合删除多种方法详解
2020/02/10 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
深入了解Python 变量作用域
2020/07/24 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
什么是Python包的循环导入
2020/09/08 Python
Django视图类型总结
2021/02/17 Python
产品质量承诺书
2014/03/27 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
爱祖国演讲稿
2014/05/04 职场文书
工地标语大全
2014/06/18 职场文书
员工生日活动方案
2014/08/24 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
用Python生成会跳舞的美女
2022/01/18 Python