No pains, No gain
走過、路過、千萬別錯過
BlogJava
首頁
新隨筆
新文章
聯系
聚合
管理
posts - 23,comments - 1,trackbacks - 0
<
2006年9月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2007年2月 (1)
2007年1月 (4)
2006年12月 (3)
2006年11月 (1)
2006年10月 (7)
2006年9月 (7)
文章檔案
2006年10月 (1)
2006年9月 (1)
常去的站點
董路blog
搜索
最新評論
1.?re: 頁面直接打印的代碼
你好,我試過了,好像不行哦。完全沒有反映
--annonce fond de commerce
閱讀排行榜
1.?javascript 增加一行 ,并且背景要一致(1824)
2.?頁面直接打印的代碼(906)
3.?ajax緩存解決(582)
4.?ABOUT: Jasperreports&IReport(498)
5.? 區別:String類與string變量、堆與棧(轉) (464)
評論排行榜
1.?頁面直接打印的代碼(1)
2.?Html(0)
3.?css 不動表頭,滾動內容(0)
4.?javascript的trim()函數的實現(0)
5.?Oracle時間日期操作 (0)
JavaScript高級應用:使用DOM技術操縱文檔[轉摘]
aaa
在前端展現越來越豐富的今天,DOM對象可以說變得非常重要(其實一直都重要),下面轉摘一篇寫的不錯的文檔,供大家以后查閱:
使用data、nodeValue和src屬性 DOM 提供了2個屬性用于修改文本節點的內容,它們是data和nodeVaule。2個屬性實現的功能相同,語法是:object.data="new value"或者object.nodeVaule="new value",其中object代表頁面中的文本項節點。如果修改圖形文件的內容,語法是:object.src="new value",其中object表示頁面中的img標記節點。來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> This is the document body <P ID = "p1Node">This is paragraph 1.</P> <P ID = "p2Node">This is paragraph 2.</P> <P ID = "p3Node">This is paragraph 3. <IMG ID = "imgNode" SRC="myexam.gif">This text follows the image <TABLE ID="tableNode"> <TR><TD BGCOLOR=yellow>This is row 1, cell 1</TD><TD BGCOLOR=orange>This is row 1, cell 2</TD></TR> <TR><TD BGCOLOR=red>This is row 2, cell 1</TD><TD BGCOLOR=magenta>This is row 2, cell 2</TD></TR> <TR><TD BGCOLOR=lightgreen>This is row 3, cell 1</TD><TD BGCOLOR=beige>This is row 3, cell 2</TD></TR> </TABLE> </P> <P ID = "p4Node">This is paragraph 4.</P> <SCRIPT LANGUAGE="JavaScript"> <!-- alert( "頁面初始狀態" + "\n\n" + "bodyNode.firstChild.nodeValue = " + bodyNode.firstChild.nodeValue + "\n" + "bodyNode.firstChild.data = " + bodyNode.firstChild.data + "\n" ); bodyNode.firstChild.nodeValue = "This is the new document body, set by the nodeValue property"; p3Node.childNodes[1].src = "myexam2.gif"; alert( "對頁面內容進行修改后" + "\n\n" + "bodyNode.firstChild.nodeValue = " + bodyNode.firstChild.nodeValue + "\n" + "bodyNode.firstChild.data = " + bodyNode.firstChild.data + "\n" + "p3Node.childNodes[1].src = " + p3Node.childNodes[1].src ); // --> </SCRIPT></BODY></HTML>
上述代碼首先顯示頁面的初始內容以及節點p1Node的相關屬性值,然后對節點bodyNode的第1個孩子節點的nodeValue屬性進行賦值修改其文本內容,對節點p3Node的第2個孩子節點(也就是了img標記)的src屬性進行賦值修改圖形的內容。 使用createElement方法 createElement 方法的功能是在文檔中創建一個孤立HTML標記節點。孤立節點既沒有孩子節點也沒有雙親節點,而且與文檔中的現存節點也互不關聯。被創建的孤立HTML標記節點的唯一信息就是它代表的HTML標記,比如< P>、< FONT>和< TABLE>。CreateElement的語法為document.createElement(HTMLTag),HTMLTag表示要創建的 HTML標記,返回值是創建的孤立HTML標記節點。來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> <SCRIPT LANGUAGE="JavaScript"> <!-- alert("頁面初始狀態"); tableObj = document.createElement("TABLE"); tbodyObj = document.createElement("TBODY"); trObj = document.createElement("TR"); tdObj = document.createElement("TD"); alert( "對頁面內容進行修改后" + "\n" + "bodyNode.firstChild = " + bodyNode.firstChild + "\n" + "tableObj.nodeName = " + tableObj.nodeName + "\n" + "tbodyObj.nodeName = " + tbodyObj.nodeName + "\n" + "trObj.nodeName = " + trObj.nodeName + "\n" + "tdObj.nodeName = " + tdObj.nodeName + "\n" + "tableObj = " + tableObj + "\n" ); // --> </SCRIPT> </BODY> </HTML>
上述代碼在文檔中創建了4個孤立HTML標記節點tableObj、tbodyObj、trObj和tdObj,它們就象太空中4顆人造衛星一樣,彼此間以及和文檔中的現有節點間都互不關聯。創建孤立節點的目的不是為了讓它真正孤立,隨后我們會介紹如何將創建的孤立節點彼此相連,并添加到文檔的DOM Tree結構中。 使用cloneNode方法 cloneNode方法的功能是通過克隆(也就是復制)文檔中一個現存節點的方式創建文檔的一個孤立節點。根據被克隆節點的類型,新創建的孤立節點或者是HTML標記節點,或者是包含字符串信息的文本項節點。 cloneNode的語法為oldNode.createNode(false)或者oldNode.createNode(true),oldNode 表示被克隆的節點,返回值是新創建的節點,false表示僅僅克隆oldNode,true表示克隆oldNode并包含其下屬節點。來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> <SCRIPT LANGUAGE="JavaScript"> <!-- alert("頁面初始狀態"); tableObj = document.createElement("TABLE"); tbodyObj = document.createElement("TBODY"); tr1Obj = document.createElement("TR"); tr2Obj = tr1Obj.cloneNode(false); tr3Obj = tr1Obj.cloneNode(false); tr1td1Obj = document.createElement("TD"); tr1td2Obj = tr1td1Obj.cloneNode(false); tr2td1Obj = tr1td1Obj.cloneNode(false); tr2td2Obj = tr1td1Obj.cloneNode(false); tr3td1Obj = tr1td1Obj.cloneNode(false); tr3td2Obj = tr1td1Obj.cloneNode(false); row1cell1Obj = document.createTextNode("This is row 1, cell 1"); row1cell2Obj = row1cell1Obj.cloneNode(false); row2cell1Obj = row1cell1Obj.cloneNode(false); row2cell2Obj = row1cell1Obj.cloneNode(false); row3cell1Obj = row1cell1Obj.cloneNode(false); row3cell2Obj = row1cell1Obj.cloneNode(false); row1cell2Obj.nodeValue = "This is row 1, cell 2"; row2cell1Obj.nodeValue = "This is row 2, cell 1"; row2cell2Obj.nodeValue = "This is row 2, cell 2"; row3cell1Obj.nodeValue = "This is row 3, cell 1"; row3cell2Obj.nodeValue = "This is row 3, cell 2"; alert( "對頁面內容進行修改后" + "\n" + "row1cell2Obj.firstChild = " + row1cell2Obj.firstChild+ "\n" + "row1cell2Obj = " + row1cell2Obj + "\n" + "row3cell2Obj.nodeValue = " + row3cell2Obj.nodeValue + "\n" + "tr3td2Obj.nodeName = " + tr3td2Obj.nodeName + "\n" ); // --> </SCRIPT></BODY></HTML>
上述代碼中值得注意的是對文本項節點的處理方式: 1、首先,使用語句row1cell1Obj = document.createTextNode("This is row 1, cell 1")創建單元格(1,1)所在節點; 2、然后使用語句row1cell1Obj.cloneNode(false)分別創建其他單元格節點; 3、最后,使用語句node.nodeValue = string分別為不同單元格賦值。使用appendChild方法 appendChild 方法的功能是在2個節點間建立起父子關系,如果作為父親的節點已經具有了孩子節點,那么新添加的孩子節點被追加為最后一個孩子,也就是 lastChild。appendChild的語法是fatherObj.appendChild(childObj),返回值是被追加的孩子節點。來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> <SCRIPT LANGUAGE="JavaScript"> <!-- alert("頁面初始狀態"); tableObj = document.createElement("TABLE"); tbodyObj = document.createElement("TBODY"); tr1Obj = document.createElement("TR"); tr2Obj = tr1Obj.cloneNode(); tr3Obj = tr1Obj.cloneNode(); tr1td1Obj = document.createElement("TD"); tr1td2Obj = tr1td1Obj.cloneNode(); tr2td1Obj = tr1td1Obj.cloneNode(); tr2td2Obj = tr1td1Obj.cloneNode(); tr3td1Obj = tr1td1Obj.cloneNode(); tr3td2Obj = tr1td1Obj.cloneNode(); row1cell1Obj = document.createTextNode("This is row 1, cell 1"); row1cell2Obj = row1cell1Obj.cloneNode(); row2cell1Obj = row1cell1Obj.cloneNode(); row2cell2Obj = row1cell1Obj.cloneNode(); row3cell1Obj = row1cell1Obj.cloneNode(); row3cell2Obj = row1cell1Obj.cloneNode(); row1cell2Obj.nodeValue = "This is row 1, cell 2"; row2cell1Obj.nodeValue = "This is row 2, cell 1"; row2cell2Obj.nodeValue = "This is row 2, cell 2"; row3cell1Obj.nodeValue = "This is row 3, cell 1"; row3cell2Obj.nodeValue = "This is row 3, cell 2"; returnValue = tableObj.appendChild(tbodyObj); tbodyObj.appendChild(tr1Obj); tbodyObj.appendChild(tr2Obj); tbodyObj.appendChild(tr3Obj); tr1Obj.appendChild(tr1td1Obj); tr1Obj.appendChild(tr1td2Obj); tr2Obj.appendChild(tr2td1Obj); tr2Obj.appendChild(tr2td2Obj); tr3Obj.appendChild(tr3td1Obj); tr3Obj.appendChild(tr3td2Obj); tr1td1Obj.appendChild(row1cell1Obj); tr1td2Obj.appendChild(row1cell2Obj); tr2td1Obj.appendChild(row2cell1Obj); tr2td2Obj.appendChild(row2cell2Obj); tr3td1Obj.appendChild(row3cell1Obj); tr3td2Obj.appendChild(row3cell2Obj); bodyNode.appendChild(tableObj); alert("對頁面內容進行修改后"); // --> </SCRIPT></BODY></HTML>
上面的代碼演示了一個Table的動態創建過程。首先創建Table的各個行、列以及單元格的節點,然后使用appendChild將這些節點進行連接形成一個Table,最后通過語句bodyNode.appendChild(tableObj)將Table裝載進文檔中。 使用applyElement方法 applyElement 方法的功能是將一個節點與它的孩子節點和父親節點脫離,然后將另外一個節點連接到這個節點,最終使它們成為父子關系。applyElement的語法是 childObj.applyElement(fatherObj),返回值是被連接的孩子節點。 我們注意到,applyElement和appendChild實現的目的基本相同,都是在2個節點間建立父子關系,但有2個區別: 1、applyElement方法只能操縱HTML標記節點,不能處理文本項節點。appendNode則能處理2種節點。 2、appendNode對2個節點的連接方式是從父到子,applyElement則是從子到父。 來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> <SCRIPT LANGUAGE="JavaScript"> <!-- alert("頁面初始狀態"); tableObj = document.createElement("TABLE"); tbodyObj = document.createElement("TBODY"); tr1Obj = document.createElement("TR"); tr2Obj = tr1Obj.cloneNode(); tr3Obj = tr1Obj.cloneNode(); tr1td1Obj = document.createElement("TD"); tr1td2Obj = tr1td1Obj.cloneNode(); tr2td1Obj = tr1td1Obj.cloneNode(); tr2td2Obj = tr1td1Obj.cloneNode(); tr3td1Obj = tr1td1Obj.cloneNode(); tr3td2Obj = tr1td1Obj.cloneNode(); row1cell1Obj = document.createTextNode("This is row 1, cell 1"); row1cell2Obj = row1cell1Obj.cloneNode(); row2cell1Obj = row1cell1Obj.cloneNode(); row2cell2Obj = row1cell1Obj.cloneNode(); row3cell1Obj = row1cell1Obj.cloneNode(); row3cell2Obj = row1cell1Obj.cloneNode(); row1cell2Obj.nodeValue = "This is row 1, cell 2"; row2cell1Obj.nodeValue = "This is row 2, cell 1"; row2cell2Obj.nodeValue = "This is row 2, cell 2"; row3cell1Obj.nodeValue = "This is row 3, cell 1"; row3cell2Obj.nodeValue = "This is row 3, cell 2"; tr1td1Obj.appendChild(row1cell1Obj); tr1td2Obj.appendChild(row1cell2Obj); tr2td1Obj.appendChild(row2cell1Obj); tr2td2Obj.appendChild(row2cell2Obj); tr3td1Obj.appendChild(row3cell1Obj); tr3td2Obj.appendChild(row3cell2Obj); tr1td1Obj.applyElement(tr1Obj); tr1Obj.appendChild(tr1td2Obj); tr2td1Obj.applyElement(tr2Obj); tr2Obj.appendChild(tr2td2Obj); tr3td1Obj.applyElement(tr3Obj); tr3Obj.appendChild(tr3td2Obj); tr1Obj.applyElement(tbodyObj); tbodyObj.appendChild(tr2Obj); tbodyObj.appendChild(tr3Obj); returnValue = tbodyObj.applyElement(tableObj); bodyNode.appendChild(tableObj); alert("對頁面內容進行修改后"); // --> </SCRIPT></BODY></HTML>
上面的代碼同樣演示了一個Table的動態創建過程。首先創建Table的各個行、列以及單元格的節點,然后混合使用applyElement和 appendChild將這些節點進行連接形成一個Table,最后通過語句bodyNode.appendChild(tableObj)將Table 裝載進文檔中 使用insertBefore方法 insertBefore方法的功能和 appendChild相似,都是將一個孩子節點連接到一個父親節點,但insertBefore方法允許我們指定孩子節點的位置。 insertBefore的語法是fatherObj.insertBefore(childObj, brotherObj),返回值是被連接的孩子節點。執行后,childObj的位置在brotherObj之前。來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> <SCRIPT LANGUAGE="JavaScript"> <!-- alert("頁面初始狀態"); tableObj = document.createElement("TABLE"); tbodyObj = document.createElement("TBODY"); tr1Obj = document.createElement("TR"); tr2Obj = tr1Obj.cloneNode(); tr3Obj = tr1Obj.cloneNode(); tr1td1Obj = document.createElement("TD"); tr1td2Obj = tr1td1Obj.cloneNode(); tr2td1Obj = tr1td1Obj.cloneNode(); tr2td2Obj = tr1td1Obj.cloneNode(); tr3td1Obj = tr1td1Obj.cloneNode(); tr3td2Obj = tr1td1Obj.cloneNode(); row1cell1Obj = document.createTextNode("This is row 1, cell 1"); row1cell2Obj = row1cell1Obj.cloneNode(); row2cell1Obj = row1cell1Obj.cloneNode(); row2cell2Obj = row1cell1Obj.cloneNode(); row3cell1Obj = row1cell1Obj.cloneNode(); row3cell2Obj = row1cell1Obj.cloneNode(); row1cell2Obj.nodeValue = "This is row 1, cell 2"; row2cell1Obj.nodeValue = "This is row 2, cell 1"; row2cell2Obj.nodeValue = "This is row 2, cell 2"; row3cell1Obj.nodeValue = "This is row 3, cell 1"; row3cell2Obj.nodeValue = "This is row 3, cell 2"; returnValue = tableObj.insertBefore(tbodyObj); tbodyObj.insertBefore(tr3Obj); tbodyObj.insertBefore(tr2Obj, tr3Obj); tbodyObj.insertBefore(tr1Obj, tr2Obj); tr1Obj.insertBefore(tr1td2Obj); tr1Obj.insertBefore(tr1td1Obj, tr1td2Obj); tr2Obj.insertBefore(tr2td2Obj); tr2Obj.insertBefore(tr2td1Obj, tr2td2Obj); tr3Obj.insertBefore(tr3td2Obj); tr3Obj.insertBefore(tr3td1Obj, tr3td2Obj); tr1td2Obj.insertBefore(row1cell2Obj); tr1td1Obj.insertBefore(row1cell1Obj); tr2td2Obj.insertBefore(row2cell2Obj); tr2td1Obj.insertBefore(row2cell1Obj); tr3td2Obj.insertBefore(row3cell2Obj); tr3td1Obj.insertBefore(row3cell1Obj); bodyNode.insertBefore(tableObj); // --> </SCRIPT></BODY></HTML>
上面的代碼又一次演示了一個Table的動態創建過程。首先創建Table的各個行、列以及單元格的節點,然后混合使用insertBefore將這些節點進行連接形成一個Table,最后通過語句bodyNode. insertBefore (tableObj)將Table裝載進文檔中。可以看到,如果省略掉第2個參數brotherObj采用fatherObj.insertBefore (childObj)方式,那么一定是在要連入的父親節點還沒有孩子節點的情況下,這時,就和appendNode方法的功能完全一樣了。 使用removeNode方法 removeNode 方法的功能是刪除一個節點,語法為node.removeNode(false)或者node.removeNode(true),返回值是被刪除的節點。removeNode(false)表示僅僅刪除指定節點,然后這個節點的原孩子節點提升為原雙親節點的孩子節點。removeNode(true)表示刪除指定節點及其所有下屬節點。被刪除的節點成為了孤立節點,不再具有有孩子節點和雙親節點。來看看下面的例子:
<HTML><HEAD><TITLE>DOM Demo</TITLE></HEAD> <BODY id=bodyNode>This is the document body <P id=p1Node>This is paragraph 1.</P> <P id=p2Node>This is paragraph 2.</P> <P id=p3Node>This is paragraph 3. <IMG id=imgNode src="myexam.gif">This text follows the image <TABLE id=tableNode> <TBODY> <TR> <TD bgColor=yellow>This is row 1, cell 1</TD> <TD bgColor=orange>This is row 1, cell 2</TD></TR> <TR> <TD bgColor=red>This is row 2, cell 1</TD> <TD bgColor=magenta>This is row 2, cell 2</TD></TR> <TR> <TD bgColor=lightgreen>This is row 3, cell 1</TD> <TD bgColor=beige>This is row 3, cell 2</TD></TR></TBODY></TABLE></P> <P id=p4Node>This is paragraph 4.</P> <SCRIPT language=JavaScript> <!-- var msg = ""; function printChildren() { childCount = bodyNode.childNodes.length; msg += "bodyNode.childNodes.length = " + bodyNode.childNodes.length + "\n" ; for(var i = 0; i < childCount; i++) { msg += "bodyNode.childNodes.nodeName = " + bodyNode.childNodes.nodeName + "\n"; } alert(msg); } msg="頁面初始狀態" + "\n\n" printChildren(); msg="對頁面內容進行修改后" + "\n\n" msg += "Deleting Paragraph 3\n"; var deletedNode = p3Node.removeNode(false); msg += "deletedNode.nodeName = " + deletedNode.nodeName + "\n"; msg += "deletedNode.childNodes.length = " + deletedNode.childNodes.length + "\n"; printChildren(); // --> </SCRIPT></BODY></HTML>
上述代碼首先顯示頁面的初始內容以及bodyNode的每個孩子節點的nodeName屬性值,然后僅僅刪除p3Node。刪除p3Node前, bodyNode有6個孩子節點,p3Node有4個孩子節點。刪除p3Node后,節點p3Node的4個孩子節點提升為bodyNode的孩子節點,這樣bodyNode就有了9個節點。p3Node被刪除后返回值為deletedNode,它的nodeName屬性值為P,孩子節點數為0,也就是說,它成為一個孤立節點。 現在我們將上述代碼中的deletedNode = p3Node.removeNode(false)修改為deletedNode = p3Node.removeNode(true),你會看到,刪除p3Node后,bodyNode的孩子節點數變為5。使用replaceNode方法 replaceNode方法的功能是用新創建的節點替換一個節點及其下屬節點,語法為oldNode.replaceNode(newNode),返回值是被替換的節點。來看看下面的例子:
<HTML><HEAD><TITLE> DOM Demo </title></HEAD> <BODY ID="bodyNode"> This is the document body <P ID = "p1Node">This is paragraph 1.</P> <P ID = "p2Node">This is paragraph 2.</P> <P ID = "p3Node">This is paragraph 3. <IMG ID = "imgNode" SRC="myexam.gif">This text follows the image <TABLE ID="tableNode"> <TR><TD BGCOLOR=yellow>This is row 1, cell 1</TD><TD BGCOLOR=orange>This is row 1, cell 2</TD></TR> <TR><TD BGCOLOR=red>This is row 2, cell 1</TD><TD BGCOLOR=magenta>This is row 2, cell 2</TD></TR> <TR><TD BGCOLOR=lightgreen>This is row 3, cell 1</TD><TD BGCOLOR=beige>This is row 3, cell 2</TD></TR> </TABLE> </P> <P ID = "p4Node">This is paragraph 4.</P> <SCRIPT LANGUAGE="JavaScript"> <!-- var msg = ""; function printChildren() { childCount = bodyNode.childNodes.length; msg += "bodyNode.childNodes.length = " + bodyNode.childNodes.length + "\n" ; for(var i = 0; i < childCount; i++) { msg += "bodyNode.childNodes.nodeName = " + bodyNode.childNodes.nodeName + "\n"; } alert(msg); } msg="頁面初始狀態" + "\n\n" printChildren(); msg="對頁面內容進行修改后" + "\n\n" msg += "Replacing Paragraph 3\n"; var b = document.createTextNode("New Body Page"); var replacedNode = p3Node.replaceNode(b); msg += "replacedNode.nodeName = " + replacedNode.nodeName + "\n"; msg += "replacedNode.childNodes.length = " + replacedNode.childNodes.length + "\n"; msg += "p2Node.nodeName = " + p2Node.nodeName + "\n"; printChildren(); // --> </SCRIPT></BODY></HTML>
上述代碼首先顯示頁面的初始內容以及bodyNode的每個孩子節點的nodeName屬性值,然后用新創建的文本項節點替換p3Node。替換后, bodyNode的孩子節點數目沒有變,原來的P節點替換為文本項節點。變量replaceNode表示被替換的節點p3Node,它仍包含原來的4個孩子節點。 replaceNode方法的另一個功能是刪除節點及其下屬節點,就象前面介紹的removeNode(true)一樣。這時,我們只需將replaceNode方法的參數設置為一個現存的節點就可以。現在,我們將上述代碼中的b = document.createTextNode("New Body Page")修改為b = p2Node,你會看到,p3Node及其下屬節點被刪除了,沒有替換節點生成,bodyNode的孩子節點數變為5。 如果replaceNode方法的參數為空,也就是執行replaceNode(),那么將導致瀏覽器腳本運行錯誤。 使用swapNode方法 swapNode方法的功能是交換2個節點(包括其下屬節點)在文檔Tree中的位置,語法為firstNode.swapNode(secondNode),返回值是節點firstNode。來看看下面的例子:
<HTML><HEAD><TITLE>DOM Demo</TITLE></HEAD> <BODY id=bodyNode>This is the document body <P id=p1Node>This is paragraph 1.</P> <P id=p2Node>This is paragraph 2.</P> <P id=p3Node>This is paragraph 3. <IMG id=imgNode src="myexam.gif">This text follows the image <TABLE id=tableNode> <TBODY> <TR> <TD bgColor=yellow>This is row 1, cell 1</TD> <TD bgColor=orange>This is row 1, cell 2</TD></TR> <TR> <TD bgColor=red>This is row 2, cell 1</TD> <TD bgColor=magenta>This is row 2, cell 2</TD></TR> <TR> <TD bgColor=lightgreen>This is row 3, cell 1</TD> <TD bgColor=beige>This is row 3, cell 2</TD></TR></TBODY></TABLE></P> <P id=p4Node>This is paragraph 4.</P> <SCRIPT language=JavaScript> <!-- var msg = ""; function printChildren() { childCount = bodyNode.childNodes.length; msg += "bodyNode.childNodes.length = " + bodyNode.childNodes.length + "\n" ; for(var i = 0; i < childCount; i++) { msg += "bodyNode.childNodes.nodeName = " + bodyNode.childNodes.nodeName + "\n"; } alert(msg); } msg="頁面初始狀態" + "\n\n" printChildren(); msg="對頁面內容進行修改后" + "\n\n" msg += "Swapping Paragraph 3 with Paragraph 2\n"; var b = p2Node; var swappedNode = p3Node.swapNode(b); msg += "swappedNode.nodeName = " + swappedNode.nodeName + "\n"; msg += "swappedNode.childNodes.length = " + swappedNode.childNodes.length + "\n"; msg += "p2Node.nodeName = " + p2Node.nodeName + "\n"; printChildren(); // --> </SCRIPT></BODY></HTML>
上述代碼首先顯示頁面的初始內容以及bodyNode的每個孩子節點的nodeName屬性值,然后交換p3Node和p2Node的位置。交換后,bodyNode的孩子節點數目沒有變,變量swappedNode表示p3Node,它仍包含原來的4個孩子節點。 swapNode 方法的另一個功能是替換節點及其下屬節點,就象前面介紹的replaceNode方法一樣。這時,我們只需將replaceNode方法的參數設置為一個新創建的節點就可以。現在,我們將上述代碼中的b = p2Node修改為b = document.createTextNode("This is a swapped in text"),你會看到,p3Node及其下屬節點被新創建的文本項節點所替換,原來的節點類型P變為了文本項節點類型#text。
轉摘自http://bbs.javascript.com.cn/simple/index.php?t180.html
posted on 2006-09-21 20:58
一縷青煙
閱讀(153)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Copyright ©2025 一縷青煙 Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
国产高清免费视频
|
国产精品亚洲专区无码唯爱网
|
男女一边摸一边做爽的免费视频
|
国产乱子伦片免费观看中字
|
亚洲综合一区二区三区四区五区
|
日本高清在线免费
|
亚洲国产视频网站
|
久久不见久久见中文字幕免费
|
国产91免费在线观看
|
亚洲性天天干天天摸
|
一级毛片免费视频
|
亚洲国产精品久久网午夜
|
国产在线jyzzjyzz免费麻豆
|
亚洲综合色丁香婷婷六月图片
|
在线观看无码的免费网站
|
亚洲第一se情网站
|
ASS亚洲熟妇毛茸茸PICS
|
日韩激情无码免费毛片
|
男女超爽视频免费播放
|
亚洲精品制服丝袜四区
|
91精品国产免费网站
|
亚洲粉嫩美白在线
|
亚洲一区二区高清
|
性无码免费一区二区三区在线
|
亚洲国语在线视频手机在线
|
暖暖在线日本免费中文
|
成在线人视频免费视频
|
亚洲国产日韩在线
|
免费又黄又硬又爽大片
|
日本一道本不卡免费
|
2020国产精品亚洲综合网
|
国产一级淫片a视频免费观看
|
十八禁视频在线观看免费无码无遮挡骂过
|
黄页免费在线观看
|
久久亚洲AV成人无码电影
|
成人毛片免费视频
|
精品一区二区三区免费观看
|
亚洲精品无码av人在线观看
|
中文无码日韩欧免费视频
|
337p日本欧洲亚洲大胆精品555588
|
亚洲二区在线视频
|