Heim  >  Artikel  >  Web-Frontend  >  javascript中parentNode,childNodes,children的应用详解_javascript技巧

javascript中parentNode,childNodes,children的应用详解_javascript技巧

WBOY
WBOYOriginal
2016-05-16 17:08:461278Durchsuche

"parentNode"

常用来获取某个元素的父节点. 把 parentNodes 理解为容器, 在容器中有个子节点    

例:


My text

在上面的代码中, 你看到把"爹"作为一个 div 容器, 该容器中有个"孩子", 就是粗体的文字部分. 如果你打算用getElementById() 方法获取粗体元素并且想知道它"爹"是谁, 返回的信息将是一个 div. 演示下面的脚本, 你就知道是怎么回事啦 ...

引用:

复制代码 代码如下:


My text

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


用 parentNode 不一定只找到一个"爹", "儿子"也可以成为"爹", 如下面的例子 ...

引用:

复制代码 代码如下:


        

           My text
        



上面这段代码中有两个"爹"和两个"孩子". 头一个 div ( id "parent") 是第二个 div (childparent) 的"爹".          
在 "childparent" 中有个粗体元素(id "child"), 是 "childparent" div 的"孩子". 那么, 如何访问到"爷爷" (id "parent")? 很简单 ....

引用:

复制代码 代码如下:


         

             My text
         

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

//-->


注意到两个 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用法例子

第一种方法

复制代码 代码如下:




New Document



























第二种方法
复制代码 代码如下:



   
   
   
   


   
   
   
   


   
   
   
   

1111
1111
1111



获取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";
    }


实例:
复制代码 代码如下:





新建网页 1

<script><BR> function setvalue(v,o)<BR> { <BR> //var obj=document.getElementById(''batchRate'');<BR> //windows.<BR> alert(o.parentNode.innerHTML); <P> alert(o.parentNode); <P> alert(o.parentElement); <P> //o.parentNode.bgColor="red";<br><br> o.parentElement.parentNode.bgColor="red";<BR> }<BR></script>







dfsdfdsfdsa    
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn