false:只克隆当前节点,不克隆任何的子节点,当然也不会克隆他所包裹的文本,因为任何文本都有指向他的节点(文本节点)
当然有时候两者是可以通用的哦,如果要复制的节点没有任何的子节点,这是二者全等;比如 img...
为了让大家理解的更为深刻,举个小例子吧:
代码如下:
Shadow |No Shadow
我定义一个变量用于指向span节点
var element = document.getElementsByTagName('span')[0];
那么
代码如下:
var t1 = element.cloneNode(false).innerHTML;//不复制子节点
var t2 = element.cloneNode(true).innerHTML;//copy all
alert(t1);
alert(t2);
这是会依次输出 (空)“”和Shadow ;
代码如下:
var textnode = element.firstChild;//指向文本节点
var t1 = textnode.cloneNode(false).nodeValue;
var t2 = textnode.cloneNode(true).nodeValue;
alert(t1);
alert(t2);
这是他们会同时输出Shadow。
【cloneNode的bug】
在上面多级联动中说到,会用cloneNode复制容器,但cloneNode在ie中有一个bug:
在ie用attachEvent给dom元素绑定事件,在cloneNode之后会把事件也复制过去。
而用addEventListener添加的事件就不会,可以在ie和ff测试下面的代码: