javascript中parentNode,childNodes,children的应用详解
"parentNode"
常用来获取某个元素的父节点.把parentNodes理解为容器,在容器中有个子节点
例:
<divid="parent">
<bid="child">Mytext</b>
</div>
在上面的代码中,你看到把"爹"作为一个div容器,该容器中有个"孩子",就是粗体的文字部分.如果你打算用getElementById()方法获取粗体元素并且想知道它"爹"是谁,返回的信息将是一个div.演示下面的脚本,你就知道是怎么回事啦...
引用:
<divid="parent">
<bid="child">Mytext</b>
</div>
<scripttype="text/javascript">
<!--
alert(document.getElementById("child").parentNode.nodeName);
//-->
</script>
用parentNode不一定只找到一个"爹","儿子"也可以成为"爹",如下面的例子...
引用:
<divid="parent">
<divid="childparent">
<bid="child">Mytext</b>
</div>
</div>
上面这段代码中有两个"爹"和两个"孩子".头一个div(id"parent")是第二个div(childparent)的"爹".
在"childparent"中有个粗体元素(id"child"),是"childparent"div的"孩子".那么,如何访问到"爷爷"(id"parent")?很简单....
引用:
<divid="parent">
<divid="childparent">
<bid="child">Mytext</b>
</div>
</div>
<scripttype="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")hasnoproperties
而IE则是:
ObjectRequired
原因是所有的支持javascript的浏览器在完全解析DOM之前运行javascript.在实际在Web编程中,可能会将大多数javascript放在head标签中.为了能够正常运行,需要在函数中包裹alert,在文档加载后调用函数.例如在Body标签中加入.
parentNode获取文档层次中的父对象。
childNodes获取作为指定对象直接后代的HTML元素和TextNode对象的集合。
children获取作为对象直接后代的DHTML对象的集合。
--------------------------------------------------------
parentNode和parentElement功能一样,childNodes和children功能一样。但是parentNode和childNodes是符合W3C标准的,可以说比较通用。而另外两个只是IE支持,不是标准,Firefox就不支持
--------------------------------------------------------
也就是说parentElement、children是IE自家的东西,别的地方是不认的。
那么,他们的标准版就是parentNode,childNodes。
这两个的作用和parentElement、children是一样的,并且是标准的、通用的。
--------------------------------------------------------
parentElementProperty:Retrievestheparentobjectintheobjecthierarchy.
childNodes:
RetrievesacollectionofHTMLElementsandTextNodeobjectsthataredirectdescendantsofthespecifiedobject.
children:
RetrievesacollectionofDHTMLObjectsthataredirectdescendantsoftheobject.
parentElementparentNode.parentNode.childNodes用法例子
第一种方法
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>NewDocument</TITLE>
<METANAME="Generator"C>
<METANAME="Author"C>
<METANAME="Keywords"C>
<METANAME="Description"C>
<SCRIPTLANGUAGE="JavaScript">
<!--
varrow=-1;
functionshowEdit(obj){
varcell2=obj.parentNode.parentNode.childNodes[1];
varrowIndex=obj.parentNode.parentNode.rowIndex;
cell2.innerHTML="<inputtype="text"value=""+cell2.innerHTML+"">";
if(row!=-1){
varoldCell2=document.getElementById("tb").rows[row].cells[1];
oldCell2.innerHTML=oldCell2.childNodes[0].value;
}
row=rowIndex;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<TABLEid="tb">
<TR>
<TD><inputtype="radio"name="rad"></TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD><inputtype="radio"name="rad"></TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD><inputtype="radio"name="rad"></TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
</BODY>
</HTML>
第二种方法
<tableborder=1width=100%>
<tr>
<td><inputname=mtype=checkbox></td>
<td>1111</td>
<td><inputname=aaavalue="222"disabled></td>
<td><inputname=bbbvalue="333"disabled></td>
</tr>
<tr>
<td><inputname=mtype=checkbox></td>
<td>1111</td>
<td><inputname=aaavalue="222"disabled></td>
<td><inputname=bbbvalue="333"disabled></td>
</tr>
<tr>
<td><inputname=mtype=checkbox></td>
<td>1111</td>
<td><inputname=aaavalue="222"disabled></td>
<td><inputname=bbbvalue="333"disabled></td>
</tr>
</table>
<SCRIPTLANGUAGE="JavaScript">
functionmm(e)
{
varcurrentTr=e.parentElement.parentElement;
varinputObjs=currentTr.getElementsByTagName("input");
for(vari=0;i<inputObjs.length;i++)
{
if(inputObjs[i]==e)continue;
inputObjs[i].disabled=!e.checked;
}
}
</SCRIPT>
获取HTML中的父控件方法
functionsetvalue(v,o)
{
//varobj=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>
<metahttp-equiv="Content-Language"c>
<metahttp-equiv="Content-Type"c>
<title>新建网页1</title>
</head>
<script>
functionsetvalue(v,o)
{
//varobj=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>
<tableborder="1"width="100%"id="table1">
<tr>
<tdwidth="250"><a>dfsdfdsfdsa</a></td>
<td> </td>
<td> </td>
</tr>
相关文章
- JavaScript笔记(7)
- 用javascript分类刷leetcode19.数组(图文视频讲解)5
- 使用 Chrome 开发者工具分析 SAP UI5 应用的 JavaScript 代码执行性能瓶颈
- javascript算与X夹角的方法详解编程语言
- javascript之水平横向滚动歌词同步的应用
- javascript实现表现、结构、行为分离的选项卡效果!
- 项目实践之javascript技巧
- JavaScript事件冒泡简介及应用
- javascript二维数组的实现与应用
- Javascript匿名函数的一种应用代码封装
- javascript中callee与caller的用法和应用场景
- Javascript中的this绑定介绍
- javascript利用控件对windows的操作实现原理与应用
- Javascript图像处理—亮度对比度应用案例
- javascript中encodeURI和decodeURI方法使用介绍
- javaScript实现浮点数转十六进制字符
- javascript的回调函数应用示例
- javascript自定义的addClass()方法
- javascript框架设计读书笔记之数组的扩展与修复
- JavaScript分析、压缩工具JavaScriptAnalyser
- javascript实现动态加载CSS