首頁 > web前端 > js教程 > 主體

javascript中parentNode,childNodes,children的應用詳解

巴扎黑
發布: 2017-06-21 10:50:51
原創
1935 人瀏覽過

本篇文章是對javascript中parentNode,childNodes,children的應用進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助

"parentNode"

常用來取得某個元素的父節點. 把parentNodes 理解為容器, 在容器中有個子節點    

範例:


My text

#在上面的程式碼中, 你看到把爹"作為一個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=&#39;text&#39; value=&#39;"+ cell2.innerHTML +"&#39;>";
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(&#39;&#39;batchRate&#39;&#39;);
        //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(&#39;&#39;batchRate&#39;&#39;);
        //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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!