javascript學(xué)習(xí)筆記(十九) 節(jié)點(diǎn)的操作實(shí)現(xiàn)代碼
更新時(shí)間:2012年06月20日 20:28:53 作者:
javascript學(xué)習(xí)筆記之節(jié)點(diǎn)的操作實(shí)現(xiàn)代碼,包括節(jié)點(diǎn)的創(chuàng)建、添加、移除、替換、復(fù)制
本節(jié)要用到的html例子
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
</ul>
1.創(chuàng)建元素節(jié)點(diǎn)
document.createElement() 方法 用于創(chuàng)建元素,接受一個(gè)參數(shù),即要?jiǎng)?chuàng)建元素的標(biāo)簽名,返回創(chuàng)建的元素節(jié)點(diǎn)
var div = document.createElement("div"); //創(chuàng)建一個(gè)div元素
div.id = "myDiv"; //設(shè)置div的id
div.className = "box"; //設(shè)置div的class
創(chuàng)建元素后還要把元素添加到文檔樹(shù)中
2.添加元素節(jié)點(diǎn)
appendChild() 方法 用于向childNodes列表的末尾添加一個(gè)節(jié)點(diǎn),返回要添加的元素節(jié)點(diǎn)
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML = "項(xiàng)目四"; //向li內(nèi)添加文本
ul.appendChild(li); //把li 添加到ul子節(jié)點(diǎn)的末尾
添加后:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
<li>項(xiàng)目四</li>
</ul>
appendChild() 方法還可以添加已經(jīng)存在的元素,會(huì)將元素從原來(lái)的位置移到新的位置
var ul = document.getElementById("myList"); //獲得ul
ul.appendChild(ul.firstChild); //把ul的第一個(gè)元素節(jié)點(diǎn)移到ul子節(jié)點(diǎn)的末尾
運(yùn)行后(IE):
<ul id="myList">
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
<li>項(xiàng)目一</li>
</ul>
insertBefore() 方法 ,如果不是在末尾插入節(jié)點(diǎn),而是想放在特定的位置上,用這個(gè)方法,該方法接受2個(gè)參數(shù),第一個(gè)是要插入的節(jié)點(diǎn),第二個(gè)是參照節(jié)點(diǎn),返回要添加的元素節(jié)點(diǎn)
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
ul.insertBefore(li,ul.firstChild); //把li添加到ul的第一個(gè)子節(jié)點(diǎn)前
添加后:
<ul id="myList">
<li>項(xiàng)目四</li>
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
</ul>
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
ul.insertBefore(li,ul.null); //把li添加到ul的子節(jié)點(diǎn)末尾
添加后:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
<li>項(xiàng)目四</li>
</ul>
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
var lis = ul.getElementsByTagName("li") //獲取ul中所有l(wèi)i的集合
ul.insertBefore(li,lis[1]); //把li添加到ul中的第二個(gè)li節(jié)點(diǎn)前
添加后:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目四</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
</ul>
3.移除元素節(jié)點(diǎn)
removeChild() 方法 ,用于移除節(jié)點(diǎn),接受一個(gè)參數(shù),即要移除的節(jié)點(diǎn),返回被移除的節(jié)點(diǎn),注意被移除的節(jié)點(diǎn)仍然在文檔中,不過(guò)文檔中已沒(méi)有其位置了
var ul = document.getElementById("myList"); //獲得ul
var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一個(gè)子節(jié)點(diǎn)1 var ul = document.getElementById("myList"); //獲得ul
var lis = ul.getElementsByTagName("li") //獲取ul中所有l(wèi)i的集合
ul.removeChild(lis[0]); //移除第一個(gè)li,與上面不同,要考慮瀏覽器之間的差異
4.替換元素節(jié)點(diǎn)
replaceChild() 方法 ,用于替換節(jié)點(diǎn),接受兩個(gè)參數(shù),第一參數(shù)是要插入的節(jié)點(diǎn),第二個(gè)是要替換的節(jié)點(diǎn),返回被替換的節(jié)點(diǎn)
var ul = document.getElementById("myList"); //獲得ul
var fromFirstChild = ul.replaceChild(ul.firstChild); //替換ul第一個(gè)子節(jié)點(diǎn)1 var ul = document.getElementById("myList"); //獲得ul;
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
var lis = ul.getElementsByTagName("li") //獲取ul中所有l(wèi)i的集合
var returnNode = ul.replaceChild(li,lis[1]); //用創(chuàng)建的li替換原來(lái)的第二個(gè)li
5.復(fù)制節(jié)點(diǎn)
cloneNode() 方法,用于復(fù)制節(jié)點(diǎn), 接受一個(gè)布爾值參數(shù), true 表示深復(fù)制(復(fù)制節(jié)點(diǎn)及其所有子節(jié)點(diǎn)), false 表示淺復(fù)制(復(fù)制節(jié)點(diǎn)本身,不復(fù)制子節(jié)點(diǎn))
var ul = document.getElementById("myList"); //獲得ul
var deepList = ul.cloneNode(true); //深復(fù)制
var shallowList = ul.cloneNode(false); //淺復(fù)制
節(jié)點(diǎn)的操作要注意IE和其它瀏覽器的差異(第十八節(jié)中有講到)
復(fù)制代碼 代碼如下:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
</ul>
1.創(chuàng)建元素節(jié)點(diǎn)
document.createElement() 方法 用于創(chuàng)建元素,接受一個(gè)參數(shù),即要?jiǎng)?chuàng)建元素的標(biāo)簽名,返回創(chuàng)建的元素節(jié)點(diǎn)
復(fù)制代碼 代碼如下:
var div = document.createElement("div"); //創(chuàng)建一個(gè)div元素
div.id = "myDiv"; //設(shè)置div的id
div.className = "box"; //設(shè)置div的class
創(chuàng)建元素后還要把元素添加到文檔樹(shù)中
2.添加元素節(jié)點(diǎn)
appendChild() 方法 用于向childNodes列表的末尾添加一個(gè)節(jié)點(diǎn),返回要添加的元素節(jié)點(diǎn)
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML = "項(xiàng)目四"; //向li內(nèi)添加文本
ul.appendChild(li); //把li 添加到ul子節(jié)點(diǎn)的末尾
添加后:
復(fù)制代碼 代碼如下:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
<li>項(xiàng)目四</li>
</ul>
appendChild() 方法還可以添加已經(jīng)存在的元素,會(huì)將元素從原來(lái)的位置移到新的位置
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
ul.appendChild(ul.firstChild); //把ul的第一個(gè)元素節(jié)點(diǎn)移到ul子節(jié)點(diǎn)的末尾
運(yùn)行后(IE):
復(fù)制代碼 代碼如下:
<ul id="myList">
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
<li>項(xiàng)目一</li>
</ul>
insertBefore() 方法 ,如果不是在末尾插入節(jié)點(diǎn),而是想放在特定的位置上,用這個(gè)方法,該方法接受2個(gè)參數(shù),第一個(gè)是要插入的節(jié)點(diǎn),第二個(gè)是參照節(jié)點(diǎn),返回要添加的元素節(jié)點(diǎn)
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
ul.insertBefore(li,ul.firstChild); //把li添加到ul的第一個(gè)子節(jié)點(diǎn)前
添加后:
復(fù)制代碼 代碼如下:
<ul id="myList">
<li>項(xiàng)目四</li>
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
</ul>
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
ul.insertBefore(li,ul.null); //把li添加到ul的子節(jié)點(diǎn)末尾
添加后:
復(fù)制代碼 代碼如下:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
<li>項(xiàng)目四</li>
</ul>
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
var lis = ul.getElementsByTagName("li") //獲取ul中所有l(wèi)i的集合
ul.insertBefore(li,lis[1]); //把li添加到ul中的第二個(gè)li節(jié)點(diǎn)前
添加后:
復(fù)制代碼 代碼如下:
<ul id="myList">
<li>項(xiàng)目一</li>
<li>項(xiàng)目四</li>
<li>項(xiàng)目二</li>
<li>項(xiàng)目三</li>
</ul>
3.移除元素節(jié)點(diǎn)
removeChild() 方法 ,用于移除節(jié)點(diǎn),接受一個(gè)參數(shù),即要移除的節(jié)點(diǎn),返回被移除的節(jié)點(diǎn),注意被移除的節(jié)點(diǎn)仍然在文檔中,不過(guò)文檔中已沒(méi)有其位置了
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一個(gè)子節(jié)點(diǎn)1 var ul = document.getElementById("myList"); //獲得ul
var lis = ul.getElementsByTagName("li") //獲取ul中所有l(wèi)i的集合
ul.removeChild(lis[0]); //移除第一個(gè)li,與上面不同,要考慮瀏覽器之間的差異
4.替換元素節(jié)點(diǎn)
replaceChild() 方法 ,用于替換節(jié)點(diǎn),接受兩個(gè)參數(shù),第一參數(shù)是要插入的節(jié)點(diǎn),第二個(gè)是要替換的節(jié)點(diǎn),返回被替換的節(jié)點(diǎn)
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var fromFirstChild = ul.replaceChild(ul.firstChild); //替換ul第一個(gè)子節(jié)點(diǎn)1 var ul = document.getElementById("myList"); //獲得ul;
var li = document.createElement("li"); //創(chuàng)建li
li.innerHTML= "項(xiàng)目四"; //向li內(nèi)添加文本
var lis = ul.getElementsByTagName("li") //獲取ul中所有l(wèi)i的集合
var returnNode = ul.replaceChild(li,lis[1]); //用創(chuàng)建的li替換原來(lái)的第二個(gè)li
5.復(fù)制節(jié)點(diǎn)
cloneNode() 方法,用于復(fù)制節(jié)點(diǎn), 接受一個(gè)布爾值參數(shù), true 表示深復(fù)制(復(fù)制節(jié)點(diǎn)及其所有子節(jié)點(diǎn)), false 表示淺復(fù)制(復(fù)制節(jié)點(diǎn)本身,不復(fù)制子節(jié)點(diǎn))
復(fù)制代碼 代碼如下:
var ul = document.getElementById("myList"); //獲得ul
var deepList = ul.cloneNode(true); //深復(fù)制
var shallowList = ul.cloneNode(false); //淺復(fù)制
節(jié)點(diǎn)的操作要注意IE和其它瀏覽器的差異(第十八節(jié)中有講到)
您可能感興趣的文章:
- JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)
- Javascript的各種節(jié)點(diǎn)操作實(shí)例演示代碼
- JavaScript 節(jié)點(diǎn)操作 以及DOMDocument屬性和方法
- js操作DOM--添加、刪除節(jié)點(diǎn)的簡(jiǎn)單實(shí)例
- JavaScript操作HTML DOM節(jié)點(diǎn)的基礎(chǔ)教程
- JavaScript節(jié)點(diǎn)及列表操作實(shí)例小結(jié)
- Js操作樹(shù)節(jié)點(diǎn)自動(dòng)折疊展開(kāi)的幾種方法
- 使用js完成節(jié)點(diǎn)的增刪改復(fù)制等的操作
- js和jquery對(duì)dom節(jié)點(diǎn)的操作(創(chuàng)建/追加)
- javascript dom操作之cloneNode文本節(jié)點(diǎn)克隆使用技巧
- JavaScript原生節(jié)點(diǎn)操作小結(jié)
相關(guān)文章
一篇文章帶你搞懂JavaScript的變量與數(shù)據(jù)類(lèi)型
這篇文章主要為大家介紹了JavaScript的變量與數(shù)據(jù)類(lèi)型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01
javascript學(xué)習(xí)筆記(三) String 字符串類(lèi)型介紹
javascript學(xué)習(xí)筆記之String 字符串類(lèi)型介紹,這里介紹的是js字符串處理常用函數(shù)2012-06-06
自定義右鍵屬性覆蓋瀏覽器默認(rèn)右鍵行為實(shí)現(xiàn)代碼
自定義右鍵屬性,對(duì)于一些新手朋友來(lái)說(shuō)還是很陌生的,此文講解的是可以覆蓋瀏覽器默認(rèn)右鍵行為,感興趣的朋友可以了解下,或許本文對(duì)你學(xué)習(xí)又進(jìn)一步2013-02-02
THREE.JS入門(mén)教程(5)你應(yīng)當(dāng)知道的十件事
Three.js是一個(gè)偉大的開(kāi)源WebGL庫(kù),WebGL允許JavaScript操作GPU,在瀏覽器端實(shí)現(xiàn)真正意義的3D,本文會(huì)讓你了解一下使用THREE.JS處理3D/避免SetInterval/使用倒序循環(huán)等等,感興趣的朋友可以了解下哦2013-01-01
JavaScript操作數(shù)組的常用方法總結(jié)
這篇文章總結(jié)了JavaScript操作數(shù)組的常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06

