在本章中,我們將討論已存在元素的節點。在這節中將學習新增(或插入)新節點 -
以下方法可用於將節點元素新增/附加到DOM中 -
appendChild()
insertBefore()
insertData()
方法appendChild()
用於向現有子節點之後新增新的子節點。
語法
appendChild()
方法的語法如下 -
Node appendChild(Node newChild) throws DOMException
其中,
newChild
? 要新增的新節點。Node
)。範例
以下範例(append_childnode.html)將XML文件(node.xml)解析為XML DOM物件,並將新的子元素PhoneNo
附加到元素 - <FirstName>
。
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else{ // code for IE5 and IE6
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/node.xml");
create_e = xmlDoc.createElement("PhoneNo");
x = xmlDoc.getElementsByTagName("FirstName")[0];
x.appendChild(create_e);
document.write(x.getElementsByTagName("PhoneNo")[0].nodeName);
</script>
</body>
</html>
在上面的例子中 -
createElement()
方法,建立一個新元素PhoneNo
。appendChild()
方法將新元素PhoneNo
新增到元素FirstName
中。執行
執行上面範例程式碼,得到以下結果 -
insertBefore()
方法在指定的子節點之前插入新的子節點。
語法insertBefore()
方法的語法如下 -
Node insertBefore(Node newChild, Node refChild) throws DOMException
其中,
newChild
- 要插入的節點refChild
- 是參照節點,即必須在其之前插入新節點的節點。範例
以下範例(insert_nodebefore.html)將XML文件(node.xml)解析為XML DOM物件,並在指定元素<Email>
之前插入新的子元素:Email
。
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else{ // code for IE5 and IE6
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/node.xml");
create_e = xmlDoc.createElement("Email");
x = xmlDoc.documentElement;
y = xmlDoc.getElementsByTagName("Email");
document.write("No of Email elements before inserting was: " + y.length);
document.write("<br>");
x.insertBefore(create_e,y[3]);
y=xmlDoc.getElementsByTagName("Email");
document.write("No of Email elements after inserting is: " + y.length);
</script>
</body>
</html>
在上面的例子中 -
createElement()
方法,建立一個新元素Email
。insertBefore()
方法在元素Email
之前新增新元素Email
。y.length
給出新元素之前和之後新增的元素總數。執行上面範例程式碼,得到以下結果 -
insertData()
方法在指定的16
位單位偏移處插入一個字串。
語法insertData()
的語法如下 -
void insertData(int offset, java.lang.String arg) throws DOMException
其中,
offset
- 是要插入的字元偏移量。arg
- 是插入資料的關鍵詞。它用括號括起兩個引數: offset
和arg
,用逗號分隔。範例
以下範例(addtext.html)將XML文件(node.xml
)解析為XML DOM物件,並將指定位置的新資料MiddleName
插入到元素<FirstName>
。
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else{ // code for IE5 and IE6
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/node.xml");
x = xmlDoc.getElementsByTagName("FirstName")[0].childNodes[0];
document.write(x.nodeValue);
x.insertData(3,"MiddleName");
document.write("<br>");
document.write(x.nodeValue);
</script>
</body>
</html>
x.insertData(6,"MiddleName");
? 這裡,x
儲存指定子名稱的名稱,即<FirstName>
。 然後,從位置3
開始向該文字節點插入資料 - MiddleName
。執行上面範例程式碼,得到以下結果 -