日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript中parentNode,childNodes,children的应用详解

發布時間:2025/6/15 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript中parentNode,childNodes,children的应用详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

"parentNode"

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

例:
<div id="parent">
<b id="child">My text</b>
</div>

在上面的代碼中, 你看到把"爹"作為一個 div 容器, 該容器中有個"孩子", 就是粗體的文字部分. 如果你打算用getElementById() 方法獲取粗體元素并且想知道它"爹"是誰, 返回的信息將是一個 div. 演示下面的腳本, 你就知道是怎么回事啦 ...

引用:

復制代碼 代碼如下:
<div id="parent">
<b id="child">My text</b>
</div>

<script type="text/javascript">
<!--

alert(document.getElementById("child").parentNode.nodeName);
//-->
</script>


用 parentNode 不一定只找到一個"爹", "兒子"也可以成為"爹", 如下面的例子 ...

引用:

復制代碼 代碼如下:
<div id="parent">
???????? <div id="childparent">
?????????? <b id="child">My text</b>
???????? </div>
</div>

上面這段代碼中有兩個"爹"和兩個"孩子". 頭一個 div ( id "parent") 是第二個 div (childparent) 的"爹".??????????
在 "childparent" 中有個粗體元素(id "child"), 是 "childparent" div 的"孩子". 那么, 如何訪問到"爺爺" (id "parent")? 很簡單 ....

引用:

復制代碼 代碼如下:
<div id="parent">
????????? <div id="childparent">
???????????? <b id="child">My text</b>
????????? </div>
</div>

<script type="text/javascript">
<!--

alert(document.getElementById("child").parentNode.parentNode.nodeName);

//-->
</script>


注意到兩個 parentNode 連用了嗎? "parentNode.parentNode". 第一個 parentNode 是 div ( id "childparent"), 因為我們要得到最外層的父元素, 所以另外加了一個 parentNode 就到了 div ( 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 currentTr=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的应用详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。