本篇文章是對javascript中parentNode,childNodes,children的應用進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
"parentNode"
常用來取得某個元素的父節點. 把parentNodes 理解為容器, 在容器中有個子節點
範例:
3b0fcde0ea4ba25d895197f4576a293b
07567a838ba66bec9f1820bfbf21ff6bMy text0d36329ec37a2cc24d42c7229b69747a
94b3e26ee717c64999d7867364b1b4a3
#在上面的程式碼中, 你看到把爹"作為一個p 容器, 該容器中有個"孩子", 就是粗體的文字部分. 如果你打算用getElementById() 方法獲取粗體元素並且想知道它"爹"是誰, 返回的信息將是一個p. 示範下面的腳本, 你就知道是怎麼回事...
引用:
程式碼如下:
<p id="parent"> <b id="child">My text</b> </p> <script type="text/javascript"> <!-- alert(document.getElementById("child").parentNode.nodeName); //--> </script>
用parentNode不一定只找到一個"爸爸", "兒子"也可以成為"爸爸", 如下面的例子...
引用:
代碼如下:
<p id="parent"> <p id="childparent"> <b id="child">My text</b> </p> </p>
上面這段程式碼中有兩個"爸爸"和兩個"孩子". 頭一個p ( id "parent") 是第二個p (childparent) 的"爸爸".
在"childparent" 中有個粗體元素(id "child"), 是"childparent" p 的"孩子". 那麼, 如何訪問到"爺爺" (id "parent")? 很簡單....
引用:
程式碼如下:
<p id="parent"> <p id="childparent"> <b id="child">My text</b> </p> </p> <script type="text/javascript"> <!-- alert(document.getElementById("child").parentNode.parentNode.nodeName); //--> </script>
注意到兩個parentNode 連用了嗎? "parentNode.parentNode". 第一個parentNode 是p ( id "childparent" ), 因為我們要得到最外層的父元素, 所以另外加了一個parentNode 就到了p ( id "parent").
使用parentNode 不只找到某個元素的nodeName, 還會更多. 例如, 你可以取得包含大量元素的父節點, 並在末尾添加一個新的節點.
IE 有它自己的名稱叫做"parentElement", 對於交叉瀏覽器腳本建議使用parentNode.
再囉嗦兩句:
如果將javascript 放在html檔頭, 會發生錯誤. Firefox 會有如下報錯:
document.getElementById("child") has no properties
而IE 則是:
Object Required
原因是所有的支援javascript 的瀏覽器在完全解析DOM 之前執行javascript . 在實際在Web 編程中,可能會將大多數javascript 放在head 標籤中. 為了能夠正常運行, 需要在函數中包裹alert , 在文檔加載後調用函數. 例如在Body 標籤中加入.
parentNode、parentElement,childNodes、children 它們有什麼差別呢?
parentElement 取得物件層次中的父物件。
parentNode 取得文件層次中的父物件。
childNodes 取得作為指定物件直接後代的 HTML 元素和 TextNode 物件的集合。
children 取得作為物件直接後代的 DHTML 物件的集合。
----------------------------------------- ---------------
parentNode和parentElement功能一樣,childNodes和children功能一樣。但是parentNode和childNodes是符合W3C標準的,可以說比較通用。而另外兩個只是IE支持,不是標準,Firefox不支持
----------------------------- ---------------------------
也就是說parentElement、children是IE自家的東西,別的地方是不認的。
那麼,他們的標準版就是parentNode,childNodes。
這兩個的作用和parentElement、children是一樣的,而且是標準的、通用的。
-------------------------------------------- ------------
以下是簡單的解釋,注意個別字的差異:
parentNode Property: Retrieves the parent object in the document hierarchy.
parentElement Property:Retrieves the parent object in the object hierarchy.
childNodes:
Retrieves a collection of HTML Elements and TextNode objects that are direct descendants of the specified object.
children:
Retrieves a collection of DHTML Objects that are direct descendants of the object.
# # parentElement parentNode.parentNode.childNodes用法範例
第一種方法
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" C> <META NAME="Author" C> <META NAME="Keywords" C> <META NAME="Description" C> <SCRIPT LANGUAGE="JavaScript"> <!-- var row = -1; function showEdit(obj){ var cell2 = obj.parentNode.parentNode.childNodes[1]; var rowIndex = obj.parentNode.parentNode.rowIndex; cell2.innerHTML = "<input type='text' value='"+ cell2.innerHTML +"'>"; if(row != -1){ var oldCell2 = document.getElementById("tb").rows[row].cells[1]; oldCell2.innerHTML = oldCell2.childNodes[0].value; } row = rowIndex; } //--> </SCRIPT> </HEAD> <BODY> <TABLE id="tb"> <TR> <TD><input type="radio" name="rad"></TD> <TD></TD> <TD></TD> </TR> <TR> <TD><input type="radio" name="rad"></TD> <TD></TD> <TD></TD> </TR> <TR> <TD><input type="radio" name="rad"></TD> <TD></TD> <TD></TD> </TR> </TABLE> </BODY> </HTML>
#第二種方法
程式碼如下:
<table border=1 width=100%> <tr> <td><input name=m type=checkbox ></td> <td>1111</td> <td><input name=aaa value="222" disabled></td> <td><input name=bbb value="333" disabled></td> </tr> <tr> <td><input name=m type=checkbox ></td> <td>1111</td> <td><input name=aaa value="222" disabled></td> <td><input name=bbb value="333" disabled></td> </tr> <tr> <td><input name=m type=checkbox ></td> <td>1111</td> <td><input name=aaa value="222" disabled></td> <td><input name=bbb value="333" disabled></td> </tr> </table> <SCRIPT LANGUAGE="JavaScript"> function mm(e) { var current Tr=e.parentElement.parentElement; var inputObjs=currentTr. getElementsByTagName ("input"); for(var i=0;i<inputObjs.length;i++) { if(inputObjs[i ]==e) continue ; inputObjs[i ].disabled=!e.checked; } } </SCRIPT>
#取得HTML中的父控制項方法
程式碼如下:
function setvalue(v,o) { //var obj=document.getElementById(''batchRate''); //windows. alert(o.parentNode.innerHTML); alert(o.parentNode); //parentNode此处也是获取父控件 alert(o.parentElement); //parentElement此处也是获取父控件 alert(o.parentElement.parentNode); //parentElement.parentNode此处也是获取父控件 //o.parentNode.bgColor="red"; o.parentElement.parentNode.bgColor="red"; }
實例:
程式碼如下:
<html> <head> <meta http-equiv="Content-Language" c> <meta http-equiv="Content-Type" c> <title>新建网页 1</title> </head> <script> function setvalue(v,o) { //var obj=document.getElementById(''batchRate''); //windows. alert(o.parentNode.innerHTML); alert(o.parentNode); alert(o.parentElement); //o.parentNode.bgColor="red"; o.parentElement.parentNode.bgColor="red"; } </script> <body> <table border="1" width="100%" id="table1"> <tr> <td width="250"><a >dfsdfdsfdsa</a></td> <td> </td> <td> </td> </tr>
以上是javascript中parentNode,childNodes,children的應用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!