關(guān)于DOM的知識整理(2)----DOM擴(kuò)展


這個(gè)部分主要總結(jié)一下對DOM的兩個(gè)主要的擴(kuò)展SelectorAPI和HTML5


選擇符API

querySelector()方法

該方法接收一個(gè)CSS選擇符,返回與該模式匹配的第一個(gè)元素,如果沒有找到匹配的元素,則返回null

querySelectorAll()方法

querySelectorAll()方法接收的參數(shù)querySelector()方法一樣,都是一個(gè)CSS選擇符,但返回的是所有匹配的元素的類似NodeList的集合,但是其底層實(shí)現(xiàn)類似于一組元素的快照,而非不斷對完檔進(jìn)行搜索的動態(tài)查詢,因此可以避免引起大多數(shù)性能問題. 如果沒有找到匹配的元素,NodeList就是空的.

matchesSelector()方法

接收CSS選擇符作為參數(shù),如果調(diào)用元素與該選擇符匹配,則返回true,反之,返回false

元素遍歷

由于使用childNodes和firstChild等屬性時(shí),會考慮到文本節(jié)點(diǎn),導(dǎo)致和預(yù)想結(jié)果不一致,為了彌補(bǔ)這一差異,Element Traversal規(guī)范新定義了一組屬性

childElementCount:

返回子元素(不包括文本節(jié)點(diǎn)和注釋)的個(gè)數(shù)

firstElementChild:

firstChild的元素版

lastElementChild:

lastChild的元素版

previousElementSibling:

previousSibling的元素版

nextElementSibling:

nextSibling的元素版

HTML5

getElementsByClassName()

其實(shí)HTML5添加的getElementsByClassName()實(shí)現(xiàn)的功能用querySelectorAll()也能實(shí)現(xiàn),不過其返回的對象時(shí)NodeList對象,而不是快照,因此存在著性能問題,若不沒有實(shí)時(shí)性的需要,那么建議使用querySelectorAll()來代替getElementsByClassName()

classList屬性

HTML5新增一種操作類名的方式,為所有元素添加classList屬性,是新集合類型DOMTokenList的實(shí)例,與其他DOM集合類似,也有l(wèi)ength屬性,另外還有以下方法

  • add(value) : 將給定的字符串值添加到列表中
  • contains(value) : 表示列表中是否存在給定的值,存在則返回true,反之返回false
  • remove(value) :從列表中刪除給定的字符串
  • toggle(value) : 如果列表中已經(jīng)存在給定的值,則刪除,反之則添加

注意:classList屬性雖然好用,但是兼容性不是很好,所以使用前根據(jù)需要是否要準(zhǔn)備跨瀏覽器方案

焦點(diǎn)管理

document.activeElement

這個(gè)屬性始終會引用DOM中當(dāng)前獲得了焦點(diǎn)的元素,默認(rèn)情況下,文檔剛剛加載完成后,document.activeElement中爆粗你的事document.body元素的引用

document.hasFocus()

這個(gè)方法可用于確定文檔是否獲得了焦點(diǎn),知道用戶是不是正在與頁面交互

HTMLDocument的變化

document.readyState

有兩個(gè)可能值:
①loading ,正在加載文檔;
②complete ,已經(jīng)加載完文檔

document.head

引用文檔的<head>元素

字符集屬性

主要指document.charset,獲取當(dāng)前文檔中實(shí)際使用的字符集,以及defalutCharset表示當(dāng)前文檔默認(rèn)的字符集應(yīng)該是什么

自定義數(shù)據(jù)屬性

HTML5規(guī)定可以為元素添加非標(biāo)準(zhǔn)的屬性,但要添加前綴data-,目的是為元素提供與渲染無關(guān)的信息或者提供語義信息.
添加了自定義屬性之后,可以通過元素的dataset屬性來訪問自定義屬性的值,每個(gè)data-name形式的屬性都會有一個(gè)對應(yīng)的屬性,只不過屬性名沒有data-前綴

插入標(biāo)記

innerHTML屬性

在讀模式下,innerHTML返回與調(diào)用元素的所有子節(jié)點(diǎn)對應(yīng)的HTML標(biāo)記
在寫模式下,innerHTML會根據(jù)制定的值創(chuàng)建新的DOM樹,然后用這個(gè)DOM樹完全替換元素原先的所有子節(jié)點(diǎn)

outerHTML屬性

在讀模式下,outerHTML返回調(diào)用它的元素及其所有子節(jié)點(diǎn)的HTML標(biāo)簽
在寫模式下,會根據(jù)特定的HTML字符串創(chuàng)建新的DOM字?jǐn)?shù),然后替換調(diào)用元素

insertAdjacentHTML()方法

接收兩個(gè)參數(shù):①插入位置②要插入的HTML文本
第一個(gè)參數(shù)從下面選取

  • "beforebegin" 當(dāng)前元素之前插入
  • "afterbegin" 插入到當(dāng)前元素作為第一個(gè)子元素
  • "beforeend" 插入到當(dāng)前元素作為最后一個(gè)子元素
  • "afterend" 當(dāng)前元素之后插入

scrpllIntoView()方法

scrollIntoView()可以在所有HTML元素上調(diào)用,通過滾動瀏覽器窗口或某個(gè)容器元素,調(diào)用元素就可以出現(xiàn)在視口中,如果傳入true作為參數(shù)或不傳入?yún)?shù),則窗口滾動之后會讓調(diào)用元素的頂部與視口頂部盡可能平齊,若傳入false為參數(shù),則調(diào)用元素會盡可能全部出現(xiàn)在視口中,頂部不一定平齊

children屬性

由于IE9之前版本與其他瀏覽器在處理文本節(jié)點(diǎn)中的空白符有差異,所以添加children屬性,只包含元素中同樣還是元素的子節(jié)點(diǎn),除此之外與childNodes沒有區(qū)別.

contains()方法

可以通過contains知道某個(gè)節(jié)點(diǎn)是不是另一個(gè)節(jié)點(diǎn)的后代,調(diào)用contains()方法的應(yīng)該是祖先節(jié)點(diǎn),接收要檢測的后代節(jié)點(diǎn)作為參數(shù),如果被檢測的節(jié)點(diǎn)是后代節(jié)點(diǎn),則該方法返回true,否則返回false

插入文本

innerText屬性

通過innerText屬性可以操作元素中包含的所有文本,通過innerText讀取值時(shí),它會按照由淺入深的順序,將子文檔樹種的所有文本拼接起來,在通過innerText寫入值時(shí),結(jié)果會刪除元素的所有子節(jié)點(diǎn),,插入包含相應(yīng)文本值的文本節(jié)點(diǎn)

outerText屬性

在作用范圍上擴(kuò)大到了包含調(diào)用他的節(jié)點(diǎn)之外,與innerText無區(qū)別


以上是參考高程3的總結(jié)內(nèi)容.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市轮听,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涉波,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醇疼,死亡現(xiàn)場離奇詭異冗澈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淀散,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門右莱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人档插,你說我怎么就攤上這事慢蜓。” “怎么了郭膛?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵晨抡,是天一觀的道長。 經(jīng)常有香客問我则剃,道長耘柱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任棍现,我火速辦了婚禮调煎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘己肮。我一直安慰自己士袄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布谎僻。 她就那樣靜靜地躺著娄柳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戈稿。 梳的紋絲不亂的頭發(fā)上西土,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天讶舰,我揣著相機(jī)與錄音鞍盗,去河邊找鬼。 笑死跳昼,一個(gè)胖子當(dāng)著我的面吹牛般甲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹅颊,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼敷存,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堪伍?” 一聲冷哼從身側(cè)響起锚烦,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帝雇,沒想到半個(gè)月后涮俄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尸闸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年彻亲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了孕锄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苞尝,死狀恐怖畸肆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宙址,我是刑警寧澤轴脐,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站抡砂,受9級特大地震影響豁辉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舀患,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一徽级、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聊浅,春花似錦餐抢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至顽冶,卻和暖如春欺抗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背强重。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工绞呈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人间景。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓佃声,卻偏偏與公主長得像,于是被迫代替她去往敵國和親倘要。 傳聞我的和親對象是個(gè)殘疾皇子圾亏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容