成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

我與DOM的第一次邂逅

yanbingyun1990 / 2212人閱讀

摘要:是操作網(wǎng)頁的接口,全稱為文檔對象模型。它的作用是將網(wǎng)頁轉為一個對象,從而可以用腳本進行各種操作節(jié)點的最小組成單位叫做節(jié)點。

DOM

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

節(jié)點

DOM 的最小組成單位叫做節(jié)點(node)。文檔的樹形結構(DOM 樹),就是由各種不同類型的節(jié)點組成

節(jié)點樹

一個文檔的所有節(jié)點,按照所在的層級,類似樹狀結構 它有一個頂層節(jié)點,下一層都是頂層節(jié)點的子節(jié)點,然后子節(jié)點又有自己的子節(jié)點

除了根節(jié)點,其他節(jié)點都有三種層級關系:

父節(jié)點關系(parentNode):直接的那個上級節(jié)點

子節(jié)點關系(childNodes):直接的下級節(jié)點

同級節(jié)點關系(sibling):擁有同一個父節(jié)點的節(jié)點

Domcument對象

Document對象提供了訪問和更新HTML頁面內容的屬性和方法
Document對象作為DOM訪問和更新HTML頁面內容的入口 可以定位HTML頁面中的元素 或者創(chuàng)建新的元素

測試Document對象
console.log(document)    //#document   頁面上的內容
Document對象的屬性和方法

Document對象的屬性和方法被定義在prototype原型中

console.log(Document.prototype)   //一個包含很多屬性和方法的對象
繼承關系

Document對象繼承于Node對象 Node對象繼承于EventTarget對象

console.log(Document.prototype instanceof Node)  //true
console.log(Node.prototype instanceof EventTarget) //true
console.log(Document.prototype instanceof EventTarget) //true
定位頁面元素的方法

DOM無論是使用的還是得到的都應該是對象

getElementById()方法

    var buttonElement =document.getElementById("btn");
    console.log(buttonElement instanceof Object)  //true

getElementsByName()方法
通過name屬性獲取
由于name屬性不唯一 得到的結果可能是多個 所以為Elements
因為得到的是一個集合 如果想取到對應的值 需要添加索引值

 
 var btn=document.getElementsByName("btn")[0]

getElementsByTagName
通過TagName屬性獲取 與name屬性相同

 
 var btn=document.getElementsByTagName("button")[0]

getElementsByClassName
通過ClassName屬性獲取 與name屬性相同 存在兼容問題

 
 var btn=document.getElementsByClassName("btn")[0]

querySelector()方法
通過CSS選擇器定位第一個匹配的元素
接收參數(shù) 表示選擇器 可以包含一個或多個CSS選擇器 多個用逗號分隔

  
var btn =document.getElementById("btn");
console.log(btn.nodeName)   //BUTTON

不同的節(jié)點類型 nodeName返回的節(jié)點名稱不同 :

元素節(jié)點(Element) ---> 元素節(jié)點的節(jié)點名

屬性節(jié)點(Attribute) ---> 屬性節(jié)點的屬性名

文本節(jié)點(Text) ---> #text

文檔節(jié)點(Document) ---> #document

nodeType 用于獲取指定節(jié)點的節(jié)點類型

var btn =document.getElementById("btn");
console.log(btn.nodeType)  //1

不同的節(jié)點類型 nodeType返回的節(jié)點名稱也不同:

元素節(jié)點(Element) ---> 1

屬性節(jié)點(Attribute) ---> 2

文本節(jié)點(Text) ---> 3

文檔節(jié)點(Document) ---> 9

nodeValue用于獲取指定節(jié)點的值

var btn =document.getElementById("btn");
console.log(btn.nodeValue);   // null

不同的節(jié)點類型 nodeValue返回的節(jié)點類型也不同:

元素節(jié)點(Element) ---> null

屬性節(jié)點(Attribute) ---> 屬性節(jié)點的屬性值

文本節(jié)點(Text) ---> 文本節(jié)點的內容

文檔節(jié)點(Document) ---> null

獲取節(jié)點 獲取父節(jié)點

通過指定元素查找它的父節(jié)點 可以用Node對象的parentNode屬性實現(xiàn)

  • Xayah
  • Lucian
  • Vayne
var abm =document.getElementById("abm"); var parent =abm.parentNode; console.log(parent); //
    ...

通過parentElement屬性 獲取其父元素節(jié)點

console.log(abm.parentElement)  //
    ...

區(qū)別:

父節(jié)點(parentNode) 并沒有指定節(jié)點的父節(jié)點是哪一個類型的節(jié)點

父元素節(jié)點(parentElement) 指定了節(jié)點的父節(jié)點一定是元素節(jié)點

獲取html的父節(jié)點 為document文檔節(jié)點
但document文檔節(jié)點并不是元素節(jié)點

var html=document.documentElement;
console.log(html.parentNode)    //文檔節(jié)點
console.log(html.parentElement)  //null
獲取子節(jié)點

可以通過Node對象的childNodes firstChild lastChild 屬性實現(xiàn)

獲取所有子節(jié)點
childNodes用于獲取指定節(jié)點的所有子節(jié)點
返回一個只讀的NodeList對象 并且是一個動態(tài)的NodeList對象

  • Xayah
  • Lucian
  • Vayne
var parent =document.getElementById("parent"); var children=parent.childNodes; console.log(children) //NodeList(7)?[text, li, text, li#abm, text, li, text]

獲取第一個子節(jié)點
Node對象提供的firstChild屬性用于獲取指定節(jié)點的第一個子節(jié)點
如果當前節(jié)點無子節(jié)點 則返回null

  • Xayah
  • Lucian
  • Vayne
var parent =document.getElementById("parent"); console.log(parent.firstChild) //#text 第一個li前的換行

獲取最后一個子節(jié)點
Node對象提供的lastChild屬性用于獲取指定節(jié)點的最后一個子節(jié)點

  • Xayah
  • Lucian
  • Vayne
var parent =document.getElementById("parent"); console.log(parent.lastChild) //#text 最后一個li后的換行
獲取相鄰兄弟節(jié)點

previousSibling 獲取指定節(jié)點的上一個兄弟節(jié)點

  • Xayah
  • Lucian
  • Vayne
var abm=document.getElementById("abm"); console.log(abm.previousSibling) //
  • Xayah
  • nextSibling 獲取指定節(jié)點的下一個兄弟節(jié)點

    • Xayah
    • Lucian
    • Vayne
    var abm=document.getElementById("abm"); console.log(abm.nextSibling) //
  • Vayne
  • 文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉載請注明本文地址:http://systransis.cn/yun/97081.html

    相關文章

    • 回望2017:一個前端從業(yè)者砥礪前行一年

      摘要:走過了這一年,公眾號的名稱前前后后改了三次,最后定格為閏土大叔。均價,這價格絕對屬于太原市最便宜的樓盤之一了。據(jù)售樓部的朋友說,未來兩年太原的房價還會迎來新一波的漲價潮,到了年,太原會承辦全國青少年運動會,簡稱青運會。 前言 從年前就嚷嚷著要走出去走出去,轉眼間已經(jīng)到了年底依然在我的大太原呆著。年底了,不能免俗的我,也來寫一篇2017年度工作總結的文章,湊湊熱鬧。如果對你有一點點啟發(fā),...

      dmlllll 評論0 收藏0
    • 回望2017:一個前端從業(yè)者砥礪前行一年

      摘要:走過了這一年,公眾號的名稱前前后后改了三次,最后定格為閏土大叔。均價,這價格絕對屬于太原市最便宜的樓盤之一了。據(jù)售樓部的朋友說,未來兩年太原的房價還會迎來新一波的漲價潮,到了年,太原會承辦全國青少年運動會,簡稱青運會。 前言 從年前就嚷嚷著要走出去走出去,轉眼間已經(jīng)到了年底依然在我的大太原呆著。年底了,不能免俗的我,也來寫一篇2017年度工作總結的文章,湊湊熱鬧。如果對你有一點點啟發(fā),...

      xietao3 評論0 收藏0
    • 玩轉 React 【第03期】:邂逅 React 組件

      摘要:中組件可以將切分成一些的獨立的可復用的部件。組件的返回值是一個需要在也頁面上顯示的元素,也就是說中組件必須有返回值。 showImg(https://segmentfault.com/img/bVbjgxB?w=900&h=383); 上期回顧 前文我們講解了 React 模板 JSX,接著我們繼續(xù)來看看 React 組件又是如何工作的呢? 組件化開發(fā)到了今天已經(jīng)是大家的共識,在 R...

      Lin_R 評論0 收藏0

    發(fā)表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <