JavaScript之DOM對象(Node結點屬性、導航屬性、頁面查找)

DOM與Node節點

1、DOM的概念
DOM 是 W3C(萬維網聯盟)的標準,DOM 定義了訪問 HTML 和 XML 文檔的標準。

W3C 文檔對象模型(DOM)是中立於平臺和語言的接口,它允許程序和腳本動態地訪問和更新文檔的內容、結構和樣式。

2、DOM的分類

  • 核心 DOM : 針對任何結構化文檔的標準模型
  • XML DOM : 針對 XML 文檔的標準模型,定義了所有 XML 元素的對象和屬性,以及訪問它們的方法。
  • HTML DOM :針對 HTML 文檔的標準模型,定義了所有 HTML 元素的對象和屬性,以及訪問它們的方法。

3、DOM節點
根據 W3C 的 HTML DOM 標準,HTML 文檔中的所有內容都是節點(NODE):

  • 整個文檔是一個文檔節點(document對象)
  • 每個 HTML 元素是元素節點(element 對象)
  • HTML 元素內的文本是文本節點(text對象)
  • 每個 HTML 屬性是屬性節點(attribute對象)
  • 註釋是註釋節點(comment對象)

4、DOM節點關係圖
1

自身屬性

1、屬性

  • attributes - 節點(元素)的屬性節點
  • nodeType – 節點類型
  • nodeValue – 節點值
  • nodeName – 節點名稱
  • innerHTML - 節點的文本值(顯示在頁面上的內容)

2、測試代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="div1">DIV1文本
    <p name="p_label"  class="p1">P文本</p>
    <div class="div2">DIV2文本
        <div div3>DIV3文本</div>
        <a href="">A文本</a>
    </div>
</div>

<script>
    var ele=document.getElementsByClassName("p1")[0];  //獲取所有class爲p1的元素,0表示第一個元素名

    //自身節點屬性
    console.log(ele);
    console.log(ele.nodeName);  //元素名
    console.log(ele.nodeType);  //元素格式
    console.log(ele.nodeValue);  //元素值
    console.log(ele.innerHTML);  //在控制檯顯示節點內容
    ele.innerHTML="Hello JavaScript";  //改變節點的內容(顯示在html頁面上的內容)
</script>
</body>
</html>

3、測試結果:
2

導航屬性

1、屬性

  • parentNode - 節點(元素)的父節點 (推薦多用)
  • firstChild – 節點下第一個子元素
  • lastChild – 節點下最後一個子元素
  • childNodes - 節點(元素)的子節點

2、測試代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="div1">DIV1文本
    <p name="p_label"  class="p1">P文本</p>
    <div class="div2">DIV2文本
        <div div3>DIV3文本</div>
        <a href="">A文本</a>
    </div>
</div>

<script>

    var ele=document.getElementsByClassName("p1")[0];  //獲取所有class爲p1的元素,0表示第一個元素名

	//導航屬性
    var a_ele=ele.parentNode;  //獲取一個新的element對象
    console.log(a_ele.nodeName);

    var b_ele=ele.nextSibling;
    console.log(b_ele.nextSibling);

    var c_ele=ele.nextElementSibling;
    console.log(c_ele.nodeName);
    console.log(c_ele.innerHTML);

    var ele2=document.getElementsByClassName("div1")[0];
    console.log(ele2.children);
    console.log(ele2.children[1].children);  //獲取div1下的第二個元素(div2)的children,即div3和a標籤
    
</script>
</body>
</html>

3、測試結果:
3

頁面查找

1、各節點的層級關係
4

2、頁面查找方法

  • 使用 getElementById() 方法
  • 使用 getElementsByTagName() 方法
  • 使用 getElementsByClassName() 方法
  • 使用 getElementsByName() 方法

3、測試代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="div1">DIV1文本
    <p name="p_label"  class="p1">P文本</p>
    <div class="div2">DIV2文本
        <div div3>DIV3文本</div>
        <a href="">A文本</a>
    </div>
</div>

<script>
    var ele=document.getElementsByClassName("p1")[0];  //獲取所有class爲p1的元素,0表示第一個元素名
    
    //獲取p標籤的“兄弟姐妹”
    var ele3=document.getElementsByName("p_label")[0];
    // console.log(ele3);  //獲取p標籤
    a_ele3=ele3.nextElementSibling
    console.log(a_ele3.innerHTML);
    console.log(a_ele3.innerText);  //獲取標籤內文本
    a_ele3.innerHTML="<h1>替換內容!</h1>";

</script>
</body>
</html>

4、測試結果
5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章