摘要:是操作網(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)建新的元素
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)分隔
querySelectorAll()方法
通過(guò)CSS選擇器定位所有匹配的元素
返回一個(gè)NodeList集合var liList=document.querySelectorAll("li);創(chuàng)建節(jié)點(diǎn)創(chuàng)建元素節(jié)點(diǎn)
Document對(duì)象提供了createElement()方法創(chuàng)建元素節(jié)點(diǎn)var buttonElement=document.crateElement("button");創(chuàng)建文本節(jié)點(diǎn)
Document對(duì)象提供了createTextNode()方法創(chuàng)建元素節(jié)點(diǎn)
接收一個(gè)參數(shù) 是文本節(jié)點(diǎn)中的內(nèi)容 是一個(gè)字符串var text=document.createTextNode("我是文本內(nèi)容")創(chuàng)建屬性節(jié)點(diǎn)
Document對(duì)象提供了createAttribute()方法創(chuàng)建元素節(jié)點(diǎn)
接受一個(gè)參數(shù) 為節(jié)點(diǎn)的屬性名稱
創(chuàng)建屬性節(jié)點(diǎn)方法只具有屬性名稱 沒(méi)有屬性值var attributeNode=document.createAttributeNode("id") //為元素添加一個(gè)id屬性Node對(duì)象Node對(duì)象主要提供了用于解析DOM節(jié)點(diǎn)樹結(jié)構(gòu)的屬性和方法
繼承關(guān)系
Node對(duì)象是解析DOM節(jié)點(diǎn)結(jié)構(gòu)的主要入口Node對(duì)象繼承于EventTarget對(duì)象 EventTarget是一個(gè)用于接收事件的對(duì)象
console.log(Node.prototype instanceof EventTarget) //trueDocument對(duì)象和Element對(duì)象都繼承于Node對(duì)象
console.log(Document.prototype instanceof Node) //true console.log(Element.prototype instanceof Node) //true測(cè)試Node對(duì)象
判斷節(jié)點(diǎn)類型
Node對(duì)象是DOM底層封裝的對(duì)象 所以并不能通過(guò)直接打印Node對(duì)象來(lái)查看它的屬性或者方法Node對(duì)象中提供了nodeName nodeType nodeValue 分別用于獲取指定節(jié)點(diǎn)的節(jié)點(diǎn)名稱 節(jié)點(diǎn)類型 節(jié)點(diǎn)值
nodeName 用于獲取指定節(jié)點(diǎn)的節(jié)點(diǎn)名稱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)
通過(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ì)象
獲取第一個(gè)子節(jié)點(diǎn)
Node對(duì)象提供的firstChild屬性用于獲取指定節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)
如果當(dāng)前節(jié)點(diǎn)無(wú)子節(jié)點(diǎn) 則返回null
獲取最后一個(gè)子節(jié)點(diǎn)
Node對(duì)象提供的lastChild屬性用于獲取指定節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)
previousSibling 獲取指定節(jié)點(diǎn)的上一個(gè)兄弟節(jié)點(diǎn)
nextSibling 獲取指定節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/97081.html
摘要:走過(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ā),...
摘要:走過(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ā),...
摘要:中組件可以將切分成一些的獨(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...
摘要:提升視野的方式有很多,最重要的一點(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與...
閱讀 2884·2021-09-01 10:30
閱讀 1737·2019-08-30 15:52
閱讀 1045·2019-08-29 18:40
閱讀 1207·2019-08-28 18:30
閱讀 2453·2019-08-23 17:19
閱讀 1403·2019-08-23 16:25
閱讀 2804·2019-08-23 16:18
閱讀 3059·2019-08-23 13:53