带你去熟悉HTML dom中当然cloneNode()与cloneNode(true)之间区别

code


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="Authar" content="木人子韦一日尘" />
<title>cloneNode()与cloneNode(true)的区别</title>
<style>
.divClones>div{
float:left;
}
</style>
</head>
<body>
<div>
<div style='background-color:green;width:200px;height:200px;text-align:center;line-height:200px;'>我才是真的绿色</div>
</div> <div class="divClones"></div>
<script>
//获取克隆的对象‘我才是真的绿色’
var getCloneDiv=document.querySelector("body>div>div:nth-child(1)");
//用addEventListener给真的节点添加事件
getCloneDiv.addEventListener("click",function(){
alert("我是你妈,我创造了你");
});
</script>
</body>
</html>

创建了一个200*200尺寸的绿色背景框,添加了onclick事件,而且我们有必要看一下输入真的节点

开始看看cloneNode()与cloneNode(true)各自的区别

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="Authar" content="木人子韦一日尘" />
<title>cloneNode()与cloneNode(true)的区别</title>
<style>
.divClones>div{
float:left;
}
</style>
</head>
<body>
<div>
<div style='background-color:green;width:200px;height:200px;text-align:center;line-height:200px;'>我才是真的绿色</div>
</div>
<div>
<button onclick="cloneDiv()">cloneNode()</button>
<button onclick="cloneTrueDiv()">cloneNode(true)</button>
</div>
<div class="divClones"></div>
<script>
//获取克隆的对象‘我才是真的绿色’
var getCloneDiv=document.querySelector("body>div>div:nth-child(1)");
getCloneDiv.addEventListener("click",function(){
alert("我是你妈,我创造了你");
});
function cloneDiv(){
var clo=getCloneDiv.cloneNode();//用cloneNode()克隆
console.log(clo);
document.querySelector(".divClones").appendChild(clo);//把cloneNode()克隆的节点添加在class为divClones节点中
}
function cloneTrueDiv(){
var clo=getCloneDiv.cloneNode(true);//用cloneNode(true)克隆
console.log(clo);
document.querySelector(".divClones").appendChild(clo);//把cloneNode(true)克隆的节点添加在class为divClones节点中
}
</script>
</body>
</html>

brower

点击cloneNode(),从下图看出,点击克隆节点无事件发生,且没有‘’‘我才是真的绿色’的文字,克隆的节点复制真节点的样式,标签,属性。至于标签里的元素,事件没有复制,所以我们可以称它浅克隆。

点击cloneNode(true),图片可以猜出来,完全把真节点的东西给复制了过来,我们称它为深克隆,这难得是事件的问题,暂时不讨论。

最新文章

  1. 简单的学习心得:网易云课堂Android开发第五章SharedPreferences与文件管理
  2. Would Your Work Habits Change if You Were Paid by the Job?
  3. oracle常用命令(比较常见好用)
  4. dmesg 的时间戳处理
  5. Python快速建站系列-Part.Two-结构化和布局
  6. lucas定理,组合数学问题
  7. Java for LeetCode 067 Add Binary
  8. UVALive 6508 Permutation Graphs
  9. [019]转--C++ operator关键字(重载操作符)
  10. UIButton图文上下对齐
  11. 我的学习之路_第二十七章_jQuery
  12. zip 安装mysql 和遇到的坑
  13. 关于Go 的 Interface
  14. Mybatis逆向工程生成po、mapper接口、mapper.xml
  15. linux 断网 扫描基本命令
  16. PAT乙级 1031. 查验身份证(15)
  17. 负载均衡器 Ribbion
  18. POI实现导出Excel和模板导出Excel
  19. Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】
  20. bzoj千题计划237:bzoj1492: [NOI2007]货币兑换Cash

热门文章

  1. Android布局性能优化—从源码角度看ViewStub延迟加载技术
  2. linux下可执行文件的库们
  3. iOS 解决键盘挡住输入框的问题
  4. android dataBinding详解
  5. UNIX环境高级编程——线程
  6. c# 单元测试工程如何取得当前项目路径
  7. gitlab6 配置的几个问题说明
  8. 在maven中开发Spring需要的jar依赖
  9. 精通mysql之精通EXPLAIN
  10. Linux0.11小结