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 相关文章推荐
Ext面向对象开发实践(续)
Nov 18 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Sep 29 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 Javascript
JS 5种遍历对象的方式
Jun 16 Javascript
原生js滑动轮播封装
Jul 31 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
PHPLog php 程序调试追踪工具
2009/09/09 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
canvas时钟效果
2017/02/16 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
python 域名分析工具实现代码
2009/07/15 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python 实现识别图片上的数字
2019/07/30 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
《太阳》教学反思
2014/02/21 职场文书
规范化管理年活动总结
2014/08/29 职场文书
离婚协议书格式
2014/11/21 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
青涩记忆观后感
2015/06/18 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
python神经网络Xception模型
2022/05/06 Python