操作DOM节点常用的4种方法及克隆DOM节点的方法

312 阅读1分钟

1、常用的操作DOM节点方法:

appendChild()

父节点调用此方法,传入的新节点,将插入到最后一个节点的后面。

var returnedNode = someNode.appendChild(newNode); 
alert(returnedNode == newNode); //true 
alert(someNode.lastChild == newNode); //true

insertBefore()

父节点调用此方法,接受两个参数:要插入的节点和参照的节点,插入节点后,插入的新节点会作为参照节点的兄弟节点,在参照节点的前一个展示。如果参照节点是null,则和appendChild()方法一样,插入到最后一个。

returnedNode = someNode.insertBefore(newNode, null); 
alert(newNode == someNode.lastChild); //true

var returnedNode = someNode.insertBefore(newNode, someNode.firstChild); 
alert(returnedNode == newNode); //true
alert(newNode == someNode.firstChild); //true

returnedNode = someNode.insertBefore(newNode, someNode.lastChild); 
alert(newNode == someNode.childNodes[someNode.childNodes.length-2]); //true

replaceChild()

替换节点,此方法接收两个参数:新节点和要替换的节点,返回要替换的节点。

var returnedNode = someNode.replaceChild(newNode, someNode.firstChild);

returnedNode = someNode.replaceChild(newNode, someNode.lastChild);

removeChild()

移除某一个节点,传入要移除的节点。

var formerFirstChild = someNode.removeChild(someNode.firstChild);

var formerLastChild = someNode.removeChild(someNode.lastChild);

以上四个方法,都是操作的某个节点的字节点,所以要先获取到父节点,然后父节点调用方法,操作其子节点。

克隆节点的方法

cloneNode()

此方法接受一个布尔值的参数,true表示深复制,复制整个节点树及其子节点,false表示浅复制,仅复制当前节点本身。

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
 </ul>
 //假设以上节点保存在变量myList中
 var deepList = myList.cloneNode(true);
 alert(deepList.childNodes.length); //3(IE<9)或7(其他浏览器)
 
 var shallowList = myList.cloneNode(false);
 alert(shallowList.childNodes.length);

上面的例子中,deepList中保存了mList执行深复制拷贝的节点,所有将其子节点一并全部复制;而shallowList是执行浅复制拷贝的节点,只复制了ul本身,所以其childNodes长度为0。