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 suggest效果 自动完成实现代码分享
Feb 17 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
Apr 14 Javascript
jQuery中closest和parents的区别分析
May 07 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
Vue分页组件实例代码
Apr 17 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
自定义vue全局组件use使用、vuex的使用详解
Jun 14 Javascript
详解如何使用koa实现socket.io官网的例子
Nov 04 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
JS async 函数的含义和用法实例总结
Apr 08 Javascript
vue 授权获取微信openId操作
Nov 13 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新闻发布系统教程
2014/05/09 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
director.js实现前端路由使用实例
2015/02/03 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
python中类与对象之间的关系详解
2020/12/16 Python
python中添加模块导入路径的方法
2021/02/03 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
全球度假村:Club Med
2017/11/27 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
校长先进事迹材料
2014/02/01 职场文书
优秀党员获奖感言
2014/02/18 职场文书
工作迟到检讨书
2014/02/21 职场文书
创建青年文明号材料
2014/05/09 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
亲属关系公证书样本
2015/01/23 职场文书
个人优缺点总结
2015/02/28 职场文书
2016春节家属慰问信
2015/03/25 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
七夕情人节问候语
2015/11/11 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
Win10系统下配置Java环境变量
2021/06/13 Java/Android