DOM 簡單小結

DOM

Node 類型

整個 HTML 文檔由各種各樣節點組成,這些節點(共 12 種)都繼承自 Node 類型,所以它們擁有一些共用的屬性和方法。

  • 屬性:
    • nodeType
    • nodeName
    • nodeValue
  • 節點關係:
    • parentNode —> 父節點
    • previousSibling —> 前一個兄弟節點
    • nextSibling —> 後一個兄弟節點
    • ownerDocument —> 節點所屬文檔節點
    • childNodes
      • 類數組集合,每次訪問時動態搜索查找,所以會影響性能
      • NodeList 對象
  • 操作節點:
    • appendChild —> 向元素末端增加節點,若傳入是已存在的子節點,則會移至最後一位
    • insertBefore —> 根據參照節點插入
    • replaceChild —> 替換節點
    • removeChild —> 移除節點
    • cloneNode —> 複製節點,根據參數有 深、淺兩種複製模式
    • normalize —> 序列化節點,去除空文本節點

Document 類型

表示整個 HTML 文檔頁面,全局對象

  • 文檔子節點:
    • documentElement 屬性 </html> 元素
    • body 屬性 </body> 元素
    • childNodes 屬性
  • 文檔信息:
    • title
    • URL
    • domain
    • referrer
  • 查找元素:
    • getElementById
    • getElementsByTagName
      • 返回 HTMLCollection 對象 注意與 NodeList 對象異同點
      • 傳入 * 星號返回所有元素
      • item & namedItem
    • getElementsByName

Element 類型

表示 HTML 元素

  • 常用屬性
    • id
    • className
    • title
  • 操作 HTML 屬性:
    • getAttribute
    • setAttribute
    • removeAttribute
    • 操作特性與訪問屬性
    • 兩類特殊屬性:style & 事件處理程序,與直接訪問元素屬性返回不同
  • attributes 屬性
    • getNamedItem
    • setNamedItem
    • removeNamedItem
    • item(pos)
  • 創建元素 document.createElement(tagName)
  • 子節點 childNodes

NodeList

深入 NodeList

小結

理解 DOM 對性能的影響

DOM 擴展

Selectors API

  • querySelector
  • querySelectorAll
  • matchesSelector
    在後代元素範圍內查找,返回的 NodeList 是一組快照,而非動態搜索查找

元素遍歷

  • childElementCount
  • firstElementChild
  • lastElementChild
  • previousElementSibling
  • lastElementSibling

HTML5

  • getElementsByClassName
  • classList
    • add
    • contains
    • remove
    • toggle
  • readyState
    • load
    • complete
  • innerHTML
  • innerText

DOM2、DOM3

樣式:style 對象

HTML 元素的 style 對象,表示當前元素的 style 樣式,CSSStyleDeclaration 類型

  • 獲取計算樣式 —> getComputedStyle

元素大小

  • 偏移量相關
    • offsetHeight
    • offsetWidth
    • offsetTop
    • offsetLeft
  • 元素自身
    • clientHeight
    • clientWidth
  • 滾動相關
    • scrollHeight
    • scrollWidth
    • scrollTop
    • scrollLeft

遍歷

深度優先

  • NodeIterator
    • document.createNodeIterator(root, ?SHOW_TYPE, ?filter, ?entityReferenceExpansion)
    • iterator.previousNode()
    • iterator.nextNode()
  • TreeWalker
    • document.createTreeWalker() // 參數與 createNodeIterator 相同
      除了 previousNode()nextNode() 方法外,還有:
    • parentNode()
    • firstChild()
    • lastChild()
    • previousSibling()
    • nextSibling()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章