DOM增刪改查基本操作

DOM增刪改查基本操作

基本概念

DOM是JavaScript操作網頁的接口,全稱為“文檔對象模型”(Document Object Model)。它的作用是將網頁轉為一個JavaScript對象,從而可以用腳本進行各種操作(比如增刪內容)。

瀏覽器會根據DOM模型,將結構化文檔(比如HTML和XML)解析成一系列的節(jié)點,再由這些節(jié)點組成一個樹狀結構(DOM Tree)。所有的節(jié)點和最終的樹狀結構,都有規(guī)范的對外接口。所以,DOM可以理解成網頁的編程接口。DOM有自己的國際標準,目前的通用版本是DOM 3,下一代版本DOM 4正在擬定中。

嚴格地說,DOM不屬于JavaScript,但是操作DOM是JavaScript最常見的任務,而JavaScript也是最常用于DOM操作的語言。本章介紹的就是JavaScript對DOM標準的實現和用法。

基本操作

DOM的基本操作和其他工作一樣:增刪改查。下面我會總結一下簡單的操作。

1、獲取

API獲取元素

  • Document.getElementById(String id)

    因為已申明通過Id獲得元素,所以參數 String id 不能再加#

  • Document.getElementsByClassName(String className)

    獲得該className的集合,是類似數組的對象

  • Document.getElementsByTagName(String tagName)

  • 獲得該tagName的集合,是類似數組的對象

  • Document.querySelector(String selector)

    參數String selector 是選擇器,class需要加 . id需要加 #

  • Document.querySelectorAll(String selector)

    獲得使用該選擇器的集合,是類似數組的對象

利用節(jié)點獲取元素

基本概念:

  • 父節(jié)點關系(parentNode):直接的那個上級節(jié)點
  • 子節(jié)點關系(childNodes):直接的下級節(jié)點
  • 同級節(jié)點關系(sibling):擁有同一個父節(jié)點的節(jié)點
  • Node.nextSibling

    返回緊跟在當前節(jié)點后面的第一個同級節(jié)點。如果當前節(jié)點后面沒有同級節(jié)點,則返回null

  • Node.previousSibling

    返回當前節(jié)點前面的、距離最近的一個同級節(jié)點。如果當前節(jié)點前面沒有同級節(jié)點,則返回null

  • Node.parentNode

    返回當前節(jié)點的父節(jié)點

    //從父節(jié)點移除指定節(jié)點
    
    if (node.parentNode) {
      node.parentNode.removeChild(node)
    }
    
  • parentElement

    返回當前節(jié)點的父Element節(jié)點

    //指定節(jié)點的父Element節(jié)點的CSS屬性
    if (node.parentElement) {
      node.parentElement.style.color = "red"
    }
    
  • childNodes

    返回一個NodeList集合,成員包括當前節(jié)點的所有子節(jié)點

    NodeList對象是一個動態(tài)集合,一旦子節(jié)點發(fā)生變化,立刻會反映在返回結果之中

    var ulElementChildNodes = document.querySelector('ul').childNodes;
    

    firstChild
    ? 返回指定節(jié)點的第一個子節(jié)點,如果該節(jié)點沒有子節(jié)點,則返回 null
    lastChild
    ? 返回指定節(jié)點的最后一個子節(jié)點,如果沒有子節(jié)點,則返回 null

2、增加

  • appendChild()

    *接受一個節(jié)點對象作為參數,將其作為最后一個子節(jié)點,插入當前節(jié)點

  • insertBefore()

    *將某個節(jié)點插入當前節(jié)點的指定位置。它接受兩個參數,第一個參數是所要插入的節(jié)點,第二個參數是當前節(jié)點的一個子節(jié)點

  • createElement()、createAttribute()、createTextNode()

    *創(chuàng)建元素、屬性、文本 節(jié)點

  • before()

    *在當前節(jié)點的前面,插入一個同級節(jié)點

  • after()

    *在當前節(jié)點的后面,插入一個同級節(jié)點

  • Node.cloneNode()

    *用于克隆一個節(jié)點。它接受一個布爾值作為參數,表示是否同時克隆子節(jié)點,默認是false,即不克隆子節(jié)點。

3、刪除

  • Node.removeChild()

    *接受一個子節(jié)點作為參數,用于從當前節(jié)點移除該子節(jié)點。它返回被移除的子節(jié)點。

  • remove()

    *用于移除當前節(jié)點 el.remove()

4、修改

  • Node.replaceChild()

    *將一個新的節(jié)點,替換當前節(jié)點的某一個子節(jié)點。它接受兩個參數,第一個參數是用來替換的新節(jié)點,第二個參數將要被替換走的子節(jié)點。它返回被替換走的那個節(jié)點。

  • replaceWith()

    *使用參數指定的節(jié)點,替換當前節(jié)點。如果參數是節(jié)點對象,替換當前節(jié)點的就是該節(jié)點對象;如果參數是文本,替換當前節(jié)點的就是參數對應的文本節(jié)點。

總結

匯總了一些使用DOM操作的基本方法。參考摘錄至 阮一峰的JavaScript標準參考教程。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、基本概念 1.1、DOM DOM是JS操作網頁的接口,全稱為“文檔對象模型”(Document Object ...
    周花花啊閱讀 3,460評論 0 6
  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,945評論 0 8
  • 第1章 認識JS JavaScript能做什么?1.增強頁面動態(tài)效果(如:下拉菜單、圖片輪播、信息滾動等)2.實現...
    mo默22閱讀 1,529評論 0 5
  • 本章內容 理解包含不同層次節(jié)點的 DOM 使用不同的節(jié)點類型 克服瀏覽器兼容性問題及各種陷阱 DOM 是針對 HT...
    悶油瓶小張閱讀 786評論 0 1
  • 如果你也擔心《娛樂至死》 全世界都在做媒體 或許從微博開始,從所謂的口碑營銷開始,媒體不再是某種專職才可以做的,發(fā)...
    Yettine閱讀 281評論 0 0

友情鏈接更多精彩內容