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 相关文章推荐
js判断字符长度以及中英文数字等
Dec 31 Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
JavaScript隐式类型转换
Mar 15 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
Bootstrap下拉菜单样式
Feb 07 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
JavaScript函数表达式详解及实例
May 05 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
Mar 13 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
es6函数name属性功能与用法实例分析
Apr 18 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/01/17 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
Google Maps API地图应用示例分享
2014/10/23 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
小程序云开发实战小结
2018/10/25 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
python实现查询IP地址所在地
2015/03/29 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
Python第三方库的安装方法总结
2016/06/06 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Python二元赋值实用技巧解析
2019/10/25 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
便利店促销方案
2014/02/20 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
保护动物倡议书
2014/04/15 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书