1. 程式人生 > >節點的操作 建立、新增、移除、移動、複製

節點的操作 建立、新增、移除、移動、複製

(1)建立新節點

createDocumentFragment()    //建立一個DOM片段
createElement()   //建立一個具體的元素
createTextNode()   //建立一個文字節點

(2)新增、移除、替換、插入

appendChild()
removeChild()
replaceChild()
insertBefore()

(3)查詢

getElementsByTagName()    //通過標籤名稱
getElementsByName()    //通過元素的Name屬性的值
getElementById()    //通過元素Id,唯一性

本節要用到的html例子

<ul id="myList">
<li>專案一</li>
<li>專案二</li>
<li>專案三</li>
</ul>

1.建立元素節點document.createElement() 方法 用於建立元素,接受一個引數,即要建立元素的標籤名,返回建立的元素節點

var div = document.createElement("div");  //建立一個div元素
div.id = "myDiv";        //設定div的id
div.className = "box";    //設定div的class

建立元素後還要把元素新增到文件樹中

2.新增元素節點appendChild() 方法 用於向childNodes列表的末尾新增一個節點,返回要新增的元素節點

var ul = document.getElementById("myList");    //獲得ul
var li = document.createElement("li");         //建立li
li.innerHTML = "專案四";                    //向li內新增文字
ul.appendChild(li);                //把li 新增到ul子節點的末尾


新增後:

<ul id="myList">
<li>專案一</li>
<li>專案二</li>
<li>專案三</li>
<li>專案四</li>
</ul>


appendChild() 方法還可以新增已經存在的元素,會將元素從原來的位置移到新的位置

var ul = document.getElementById("myList");    //獲得ul
ul.appendChild(ul.firstChild);            //把ul的第一個元素節點移到ul子節點的末尾

執行後(IE):

<ul id="myList">
<li>專案二</li>
<li>專案三</li>
<li>專案一</li>
</ul>


insertBefore() 方法 ,如果不是在末尾插入節點,而是想放在特定的位置上,用這個方法,該方法接受2個引數,第一個是要插入的節點,第二個是參照節點,返回要新增的元素節點

var ul = document.getElementById("myList");    //獲得ul
var li = document.createElement("li");         //建立li
li.innerHTML= "專案四";                    //向li內新增文字
ul.insertBefore(li,ul.firstChild);        //把li新增到ul的第一個子節點前


新增後:

<ul id="myList">
<li>專案四</li>
<li>專案一</li>
<li>專案二</li>
<li>專案三</li>
</ul>
var ul = document.getElementById("myList");    //獲得ul
var li = document.createElement("li");         //建立li
li.innerHTML= "專案四";               //向li內新增文字
ul.insertBefore(li,ul.lastChild);        //把li新增到ul的子節點末尾

新增後:

<ul id="myList">
<li>專案一</li>
<li>專案二</li>
<li>專案三</li>
<li>專案四</li>
</ul>
var ul = document.getElementById("myList");    //獲得ul
var li = document.createElement("li");         //建立li
li.innerHTML= "專案四";                    //向li內新增文字
var lis = ul.getElementsByTagName("li")   //獲取ul中所有li的集合
ul.insertBefore(li,lis[1]);            //把li新增到ul中的第二個li節點前

新增後:

<ul id="myList">
<li>專案一</li>
<li>專案四</li>
<li>專案二</li>
<li>專案三</li>
</ul>

3.移除元素節點
removeChild() 方法 ,用於移除節點,接受一個引數,即要移除的節點,返回被移除的節點,注意被移除的節點仍然在文件中,不過文件中已沒有其位置了

var ul = document.getElementById("myList");            //獲得ul 
var fromFirstChild = ul.removeChild(ul.firstChild);    //移除ul第一個子節點
var ul = document.getElementById("myList");    //獲得ul
var lis = ul.getElementsByTagName("li")        //獲取ul中所有li的集合
ul.removeChild(lis[0]);                  //移除第一個li,與上面不同,要考慮瀏覽器之間的差異

4.替換元素節點replaceChild() 方法 ,用於替換節點,接受兩個引數,第一引數是要插入的節點,第二個是要替換的節點,返回被替換的節點

var ul = document.getElementById("myList");            //獲得ul
var fromFirstChild = ul.replaceChild(ul.firstChild);    //替換ul第一個子節點
var ul = document.getElementById("myList");    //獲得ul;
var li = document.createElement("li");         //建立li
li.innerHTML= "專案四";                    //向li內新增文字
var lis = ul.getElementsByTagName("li")        //獲取ul中所有li的集合
var returnNode = ul.replaceChild(li,lis[1]);   //用建立的li替換原來的第二個li

5.複製節點cloneNode() 方法,用於複製節點, 接受一個布林值引數, true 表示深複製(複製節點及其所有子節點), false 表示淺複製(複製節點本身,不復制子節點)

var ul = document.getElementById("myList");    //獲得ul
var deepList = ul.cloneNode(true);            //深複製
var shallowList = ul.cloneNode(false);        //淺複製

原文地址:http://www.wc87.com/original/js/536.html