JavaScript第十章

DOM樹

在這裏插入圖片描述

Node類型

JavaScript中的所有節點類型都繼承自Node類型。
nodeType:

  • Node.ELEMENT_NODE(1);
  • Node.ATTRIBUTE_NODE(2);
  • Node.TEXT_NODE(3);
  • Node.CDATA_SECTION_NODE(4);
  • Node.ENTITY_REFERENCE_NODE(5);
  • Node.ENTITY_NODE(6);
  • Node.PROCESSING_INSTRUCTION_NODE(7);
  • Node.COMMENT_NODE(8);
  • Node.DOCUMENT_NODE(9);
  • Node.DOCUMENT_TYPE_NODE(10);
  • Node.DOCUMENT_FRAGMENT_NODE(11);
  • Node.NOTATION_NODE(12);

節點關係

每個節點都有一個childNodes屬性,其中保存着一個NodeList對象。NodeList是一種類數組對象,可以使用方括號或item()來獲取元素,用length來獲取長度,但它不是Array實例。它的特殊之處在與,它實際上是基於DOM結構動態執行查詢的結果,因此DOM結構的變化能自動反映在NodeList對象中。NodeList是有生命,有呼吸的對象,而不是在某個瞬間拍攝的快照。
node關係
hasChildNodes():在節點包含子節點時返回true
ownerDocument:該屬性指向表示整個文檔的文檔節點

操作節點

  • appendChild(node A): 從末尾插入
  • insertBefore(node A, node B): insert A before B
  • replaceChild(node A, node B): replace B to A
  • removeChild(node A)
  • cloneNode(true / false): 複製調用該方法的節點。不會複製添加到DOM節點中的JavaScript屬性
    • true: 深複製,複製節點及其整個子節點樹
    • false:淺複製,只複製節點

Document類型(nodeType=9)

document對象是window對象的一個屬性,因此可以將其作爲全局對象來訪問。它是隻讀的。

屬性

  • documentElement:始終指向HTML頁面中的<html>元素

  • body:直接指向<body>元素

  • title:<title>元素的文本

  • URL:頁面完整的URL

  • domain:頁面的域名。可以設置,但不能設置爲URL中不包含的域,並且只能從緊湊到鬆散單方向設置。如:

    // 假設頁面來自p2p.wrox.com
    document.domain = "wrox.com"; //成功
    document.domain = "nczonline.net"; //失敗
    
  • referrer:鏈接到當前頁面的原頁面的URL

方法

查找

  • getElementById():首次匹配
  • getElementsByTagName():返回HTMLCollection對象。類似NodeList,也是一個“動態“集合。
  • getElementsByName()

HTMLLocation對象
可以通過方括號或者名稱訪問項。
假如方括號內是數字,則實際上會調用item()方法,以索引取得值,假如方括號內是字符串,則會調用namedItem(),以元素的name屬性取得值

文檔寫入

將輸出流寫入到網頁

  • write()
  • writeln()
  • open()
  • close()

Text 類型

通過nodeValue屬性或者data屬性訪問Text節點中的文本。
TextNode一般是ElementNode節點的子節點。因此,採用firstChild或者childNodes[]來訪問

方法

  • appendData(text):在原有的text後面增加文本
  • deleteData(offset, count)
  • insertData(offset, text)
  • replaceData(offset, count, text)
  • splitText(offset):與normalize相反,從offset處分割
  • substringData(offset, count)
  • normalize():將多個text子節點合併

屬性

  • length

Attr類型

特性節點一般不認爲是DOM樹的一部分,因此開發人員不會直接去操作Attr節點

方法

element:

  • getAttribute(name):返回屬性
  • getAttributeNode(name): 返回node
  • setAttribute(name, value):設置屬性
  • setAttributeNode(node):添加節點
  • removeAttribute()

document:

  • createAttribute(name)

屬性

  • value:特性的值
  • name:特性名稱

NodeList

NodeList和它的近親NameNodedMap和HTMLCollection都是動態的。每次訪問這些集合都會實時更新。

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