1. 程式人生 > >JS 中DOM節點的訪問關係

JS 中DOM節點的訪問關係

節點的訪問關係,是以屬性的方式存在的。DOM的節點並不是孤立的,因此可以通過DOM節點之間的相對關係對它們進行訪問。

一、關係

1、父節點 parentNode

  呼叫者就是節點。一個節點只有一個父節點。呼叫方式:節點.parentNode

2、兄弟節點

nextSibling

nextElementSibling

previousSibling

previousElementSibling

nextSibling:呼叫者是節點。IE678中指下一個元素節點(標籤)。在火狐谷歌IE9+以後都指的是下一個節點(包括空文件和換行節點)。

nextElementSibling:在火狐谷歌IE9都指的是下一個元素節點。

總結:在IE678中用nextSibling,在火狐谷歌IE9+以後用nextElementSibling

下一個兄弟節點=節點.nextElementSibling || 節點.nextSibling

previousSibling:呼叫者是節點。IE678中指前一個元素節點(標籤)。在火狐谷歌IE9+以後都指的是前一個節點(包括空文件和換行節點)。

previousElementSibling:在火狐谷歌IE9都指的是前一個元素節點。

總結:在IE678中用previousSibling,在火狐谷歌IE9+以後用previousElementSibling

下一個兄弟節點=節點.previousElementSibling|| 節點.previousSibling


3、子節點

firstChild:呼叫者是父節點。IE678中指第一個子元素節點(標籤)。在火狐谷歌IE9+以後都指的是第一個節點(包括空文件和換行節點)。

firstElementChild:在火狐谷歌IE9都指的第一個元素節點。

第一個子節點=父節點.firstElementChild || 父節點.firstChild

lastChild:呼叫者是父節點。IE678中指最後一個子元素節點(標籤)。在火狐谷歌IE9+以後都指的是最後一個節點(包括空文件和換行節點)。

lastElementChild:在火狐谷歌IE9都指的最後一個元素節點。

第一個子節點=父節點.lastElementChild|| 父節點.lastChild


4、所有位元組點

childNodes

children

childNodes:它是標準屬性,它返回指定元素的子元素集合,包括HTML節點,所有屬性,文字節點   (

火狐谷歌等高本版會把換行也看做是子節點

nodeType==1時才是元素節點(標籤)

      nodeType ==  1  表示的是元素節點   記住  元素就是標籤

      nodeType ==  2  表示是屬性節點   瞭解

      nodeType ==  3  是文字節點   瞭解

子節點陣列 = 父節點.childNodes;   獲取所有節點。

children:非標準屬性,它返回指定元素的子元素集合。

但它只返回HTML節點,甚至不返回文字節點,雖然不是標準的DOM屬性,但它和innerHTML方法一樣,得到了幾乎所有瀏覽器的支援。

children在IE6/7/8中包含註釋節點

在IE678中,註釋節點不要寫在裡面。

子節點陣列 = 父節點.children;   用的最多。


節點自己.parentNode.children[index];隨意得到兄弟節點。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>不要的</title>
</head>
<body>

<div id="box1">

    <div id="box2" ></div>
    <div id="box3"></div>
    <div dir="box4"></div>
    <div dir="box5"></div>

</div>


<script type="text/javascript">

    // 獲取 box2結點
    var  box2=document.getElementById('box2');

    // 根據 parentNode  獲取 box1結點
    var box1=box2.parentNode;

    //兄弟節點 獲取下一個節點
    var box3=box2.nextElementSibling;
    console.log(box3);

    //獲取box3上一個節點
    var  newbox2=box3.previousElementSibling;
    console.log(newbox2);

    //子節點
    //獲取box1 第一個子節點
    var firstbox=box1.firstElementChild;
    console.log(firstbox);
    //獲取 box2最後一個子節點
    var lastbox=box1.lastElementChild;
    console.log(lastbox);

    //所有子節點
    var  allchild=box1.childNodes;
    console.log('allchild='+allchild);
    var  all=box1.children;
    console.log('all='+all);


</script>

</body>
</html>