<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>DOM节点增删改操作</title> </head> <body> <p id="s"><span id="ss">b</span><a id="sss">b</a></p> </body> <script type="text/javascript"> /*除了cloneNode还有 appendChild()、insertBefore()、replaceChild()、removeChild()的用法*/ var s=document.getElementById('s'); var ss=document.getElementById('ss'); var sss=document.getElementById('sss'); var deepcopy=s.cloneNode(true);//深复制 var lightcopy=s.cloneNode(false);//浅复制 var deepparent= deepcopy.parentNode; console.log(deepcopy); console.log(lightcopy); console.log(deepparent);//null /*在参数为 true 的情况下,执行深复制,也就是复制节点及其整个子节点树;在参数为 false 的情况下,执行浅复制, 即只复制节点本身。 复制后返回的节点副本属于文档所有,但并没有为它指定父节点。 因此,这个节点 副本就成为了一个“孤儿”,除非通过 appendChild()、insertBefore()或 replaceChild()将它添加到文档中。*/ /* cloneNode()方法不会复制添加到 DOM 节点中的 JavaScript 属性,例如事件处 理程序等。这个方法只复制特性、(在明确指定的情况下也复制)子节点,其他一切 都不会复制。IE 在此存在一个 bug,即它会复制事件处理程序,所以我们建议在复制 之前最好先移除事件处理程序。 */ </script> </html>