成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

我與DOM的第一次邂逅

yanbingyun1990 / 2250人閱讀

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

DOM

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

節(jié)點(diǎn)

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

節(jié)點(diǎn)樹

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

除了根節(jié)點(diǎn),其他節(jié)點(diǎn)都有三種層級(jí)關(guān)系:

父節(jié)點(diǎn)關(guān)系(parentNode):直接的那個(gè)上級(jí)節(jié)點(diǎn)

子節(jié)點(diǎn)關(guān)系(childNodes):直接的下級(jí)節(jié)點(diǎn)

同級(jí)節(jié)點(diǎn)關(guān)系(sibling):擁有同一個(gè)父節(jié)點(diǎn)的節(jié)點(diǎn)

Domcument對(duì)象

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

測(cè)試Document對(duì)象
console.log(document)    //#document   頁(yè)面上的內(nèi)容
Document對(duì)象的屬性和方法

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

console.log(Document.prototype)   //一個(gè)包含很多屬性和方法的對(duì)象
繼承關(guān)系

Document對(duì)象繼承于Node對(duì)象 Node對(duì)象繼承于EventTarget對(duì)象

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

DOM無(wú)論是使用的還是得到的都應(yīng)該是對(duì)象

getElementById()方法

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

getElementsByName()方法
通過(guò)name屬性獲取
由于name屬性不唯一 得到的結(jié)果可能是多個(gè) 所以為Elements
因?yàn)榈玫降氖且粋€(gè)集合 如果想取到對(duì)應(yīng)的值 需要添加索引值

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

getElementsByTagName
通過(guò)TagName屬性獲取 與name屬性相同

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

getElementsByClassName
通過(guò)ClassName屬性獲取 與name屬性相同 存在兼容問(wèn)題

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

文本節(jié)點(diǎn)(Text) ---> 文本節(jié)點(diǎn)的內(nèi)容

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

獲取節(jié)點(diǎn) 獲取父節(jié)點(diǎn)

通過(guò)指定元素查找它的父節(jié)點(diǎn) 可以用Node對(duì)象的parentNode屬性實(shí)現(xiàn)

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

通過(guò)parentElement屬性 獲取其父元素節(jié)點(diǎn)

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

區(qū)別:

父節(jié)點(diǎn)(parentNode) 并沒(méi)有指定節(jié)點(diǎn)的父節(jié)點(diǎn)是哪一個(gè)類型的節(jié)點(diǎn)

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

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

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

可以通過(guò)Node對(duì)象的childNodes firstChild lastChild 屬性實(shí)現(xiàn)

獲取所有子節(jié)點(diǎn)
childNodes用于獲取指定節(jié)點(diǎn)的所有子節(jié)點(diǎn)
返回一個(gè)只讀的NodeList對(duì)象 并且是一個(gè)動(dòng)態(tài)的NodeList對(duì)象

  • 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]

獲取第一個(gè)子節(jié)點(diǎn)
Node對(duì)象提供的firstChild屬性用于獲取指定節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)
如果當(dāng)前節(jié)點(diǎn)無(wú)子節(jié)點(diǎn) 則返回null

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

獲取最后一個(gè)子節(jié)點(diǎn)
Node對(duì)象提供的lastChild屬性用于獲取指定節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)

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

previousSibling 獲取指定節(jié)點(diǎn)的上一個(gè)兄弟節(jié)點(diǎn)

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

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

    轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/97081.html

    相關(guān)文章

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

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

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

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

      xietao3 評(píng)論0 收藏0
    • 玩轉(zhuǎn) React 【第03期】:邂逅 React 組件

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

      Lin_R 評(píng)論0 收藏0
    • 我與前端 | 視野重要性

      摘要:提升視野的方式有很多,最重要的一點(diǎn)在于自己主動(dòng)動(dòng)腦思考,去想的越多,收獲也就會(huì)越多。相關(guān)文章鏈接我與前端因興趣起源 HTML5學(xué)堂(碼匠):在自學(xué)WEB前端或者任何一種技術(shù)的過(guò)程中,視野都是極其重要的影響因素,視野決定著我們努力的方向,縱然我們多么努力,走錯(cuò)了方向也是枉然。 視野的重要性 (我與前端系列-02) 1.書籍問(wèn)題導(dǎo)致自學(xué)效率不高 通過(guò)一段時(shí)間的自學(xué),已經(jīng)清晰了解了HTML與...

      william 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    閱讀需要支付1元查看
    <