在JavaScript中,我們可以使用replaceChild()方法來實現替換節點。
語法:
obj.replaceChild(new,old)
說明:
obj,表示被替換節點的父節點;
new,表示替換後的新節點;
old,需要被替換的舊節點。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function replace() { //獲取兩個文本框的值 var tag = document.getElementById("tag").value; var txt = document.getElementById("txt").value; //獲取p元素 var lvye = document.getElementById("lvye"); //根據兩個文本框的值創建新節點 var e = document.createElement(tag); var t = document.createTextNode(txt); e.appendChild(t); document.body.replaceChild(e,lvye); } </script> </head> <body> <p id="lvye"> 學習網</p> <hr /> 輸入標簽:<input id="tag" type="text"/><br /> 輸入文本:<input id="txt" type="text"/><br /> <input type="button" value="替換" onclick="replace()" /> </body> </html>
在浏覽器預覽效果如下:
分析:
當我們在第1個文本框輸入“h1”,第2個文本框輸入字符串“JavaScript”,然後點擊“替換按鈕”,浏覽器預覽效果如下:
由於id為lvye的p元素父節點為body,所以根據替換節點的語法“obj.replaceChild(new,old)”應該判斷得出obj應該是body元素。大家一定要理解好這一句代碼“document.body.replaceChild(e,lvye);”。
也就是說,想要實現替換節點,就必須找到3點:
(1)新節點;
(2)被替換的子節點;
(3)被替換子節點的父節點;
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function replace() { //獲取兩個文本框的值 var tag = document.getElementById("tag").value; var txt = document.getElementById("txt").value; //獲取p元素 var lvye = document.getElementById("lvye"); //根據兩個文本框的值創建新節點 var e = document.createElement(tag); var t = document.createTextNode(txt); e.appendChild(t); document.getElementById("wrap").replaceChild(e,lvye); } </script> </head> <body> <div id="wrap"> <p id="lvye"> 學習網</p> <hr /> 輸入標簽:<input id="tag" type="text"/><br /> 輸入文本:<input id="txt" type="text"/><br /> <input type="button" value="替換" onclick="replace()" /> </div> </body> </html>
在浏覽器預覽效果如下:
分析:
由於id為lvye的p元素的父節點不是body了,也就是說使用“document.body.replaceChild(e,lvye);”這句就行不通了。因此必須重新獲取p元素的父節點才能使用replaceChild()方法,不然浏覽器就會報錯。大家要好好對比這2個例子理解一下。