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 相关文章推荐
jquery.validate使用攻略 第三部
Jul 01 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
JavaScript多线程详解
Aug 12 Javascript
node.js的事件机制
Feb 08 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
Feb 17 Javascript
BootStrap表单宽度设置方法
Mar 10 Javascript
Javascript中八种遍历方法的执行速度深度对比
Apr 25 Javascript
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 Javascript
vue中组件的3种使用方式详解
Mar 23 Javascript
Vuex的API文档说明详解
Feb 05 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
分析Python中解析构建数据知识
2018/01/20 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
初中科学教学反思
2014/01/21 职场文书
中学劳技课教师的自我评价
2014/02/05 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
敬老月活动总结
2014/08/28 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
怒海潜将观后感
2015/06/11 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技