DOM

DOM 文檔對(duì)象模型,就是當(dāng)前網(wǎng)頁(yè)里面的所有內(nèi)容。

因?yàn)榫W(wǎng)頁(yè)是在瀏覽器中顯示的,整個(gè)瀏覽器是BOM,所以DOM其實(shí)是BOM的一部分

BOM 就是 window對(duì)象? ? ? DOM 就是 document對(duì)象


(一)使用DOM獲取網(wǎng)頁(yè)元素

1.如果該網(wǎng)頁(yè)元素,在一個(gè)網(wǎng)頁(yè)中只會(huì)出現(xiàn)一次,通過(guò)document可以直接獲取

? ? ? ? document.title = "好好學(xué)習(xí)DOM"

? ? ? ? document.body.style.backgroundColor = "lightblue"

?2.如果網(wǎng)頁(yè)元素,在網(wǎng)頁(yè)中會(huì)經(jīng)常使用,就需用通過(guò)特定的方法來(lái)獲取

? ? ? ? getElementsByTagName()方法,根據(jù)標(biāo)簽的名稱(chēng)獲取所有該標(biāo)簽

? ? ? ? let hs = document.getElementsByTagName('h2')

? ? ? ? hs[0].innerText = '天津'

? ? ? ? hs[1].innerText = '東京'

? ? ? ? getElementById()方法,根據(jù)標(biāo)簽的id屬性名稱(chēng),獲取對(duì)應(yīng)的標(biāo)簽

? ? ? ? // 如果id屬性值不唯一,只獲取第一個(gè)

? ? ? ? let sh = document.getElementById('sh')

? ? ? ? sh.innerText = '鐵嶺'

? ? ? ? getElementsByName()方法,根據(jù)標(biāo)簽的name屬性值,獲取所有對(duì)應(yīng)的標(biāo)簽

? ? ? ? let red = document.getElementsByName('red')

? ? ? ? for(let i=0;i<red.length;i++){

? ? ? ? ? ? red[i].style.color="red"

? ? ? ? }

? ? ? ? getElementsByClassName()方法,根據(jù)標(biāo)簽的class屬性值,獲取所有對(duì)應(yīng)的標(biāo)簽

? ? ? ? let blue = document.getElementsByClassName('blue')

? ? ? ? for(let i=0;i<blue.length;i++){

? ? ? ? ? ? blue[i].style.backgroundColor = 'blue'

? ? ? ? }

封裝DOM獲取

function$(id){

????????????returndocument.getElementById(id)

}

(1)querySelector()方法,根據(jù)選擇器規(guī)則,獲取對(duì)應(yīng)的第一個(gè)元素

? ? ? ? 如果選擇器的返回的結(jié)果不止一個(gè),只返回第一個(gè)。

? ? ? ? let c = document.querySelector('.a .b .c')

? ? ? ? c.innerText = '蘋(píng)果'

? (2)querySelectorAll()方法,根據(jù)選擇器規(guī)則,獲取對(duì)應(yīng)的所有元素

????????注意:querySelectorAll()方法,返回的是集合對(duì)象,不是數(shù)組對(duì)象??梢岳谜归_(kāi)運(yùn)算? ? ? ? ? 符,將集合對(duì)象轉(zhuǎn)為數(shù)組對(duì)象。

? ? ? ? let cs = document.querySelectorAll('.c')

? ? ? ? cs.forEach(r=>{

? ? ? ? ? ? r.style.backgroundColor = 'pink'

? ? ? ? })



(二)操作DOM元素的內(nèi)容和樣式

操作DOM的樣式,有多種方式:

1.通過(guò)style屬性直接設(shè)置? ? ?如果樣式名稱(chēng)是多個(gè)單詞的組合,需要使用小駝峰命名規(guī)范

2.通過(guò)className屬性設(shè)置類(lèi)選擇器

3.也可以通過(guò)classList屬性添加多個(gè)類(lèi)選擇器

操作DOM的內(nèi)容:

1.innerText屬性,用于獲取 和 操作 DOM的文本內(nèi)容。

innerText屬性設(shè)置內(nèi)容時(shí),不能識(shí)別html標(biāo)簽,會(huì)將html標(biāo)簽以文本的形式呈現(xiàn)

2.innerHTML屬性,用于獲取 和 操作 DOM的HTML內(nèi)容。

innerHTML屬性設(shè)置內(nèi)容時(shí),能夠識(shí)別html標(biāo)簽


<div class="a"></div>

<div class="b"></div>

<div id="c">我正在學(xué)習(xí)JS-DOM</div>

<div id="d">我正在學(xué)習(xí)HTML</div>

<button id="size">添加大小</button>

<button id="color">添加顏色</button>

<button id="radius">添加圓角</button>

<button id="bgcolor">添加背景</button>

<br><br>

<button id="size2">移除大小</button>

<button id="color2">移除顏色</button>

<button id="radius2">移除圓角</button>

<button id="bgcolor2">移除背景</button>

<div id="e">我正在學(xué)習(xí)JavaScript</div

?獲取div#e元素

? ? let e = document.querySelector('#e')

? ? // 通過(guò)classList屬性,給元素添加多個(gè)類(lèi)選擇器

? ? //獲取#size按鈕,并給按鈕注冊(cè)一個(gè)點(diǎn)擊事件

? ? document.querySelector('#size').onclick = function(){

? ? ? ? // 通過(guò)add方法,添加類(lèi)選擇器

? ? ? ? e.classList.add('size')

? ? }

? ? 顏色按鈕點(diǎn)擊事件

? ? document.querySelector('#color').onclick = function(){

? ? ? ? e.classList.add('color')

? ? }

? ? 圓角按鈕點(diǎn)擊事件

? ? document.querySelector('#radius').onclick = function(){

? ? ? ? e.classList.add('radius')

? ? }

? ? 背景按鈕點(diǎn)擊事件

? ? document.querySelector('#bgcolor').onclick = function(){

? ? ? ? e.classList.add('bgcolor')

? ? }

? ? 下面是移除樣式

? ? document.querySelector('#size2').onclick = function(){

? ? ? ? 通過(guò)remove方法,移除類(lèi)選擇器

? ? ? ? e.classList.remove('size')

? ? }

顏色移除事件

?document.querySelector('#color2').onclick = function(){

? ? ? ? e.classList.remove('color')

? ? }

圓角移除事件

? ? document.querySelector('#radius2').onclick = function(){

? ? ? ? e.classList.remove('radius')

? ? }

背景顏色移除事件

? ? document.querySelector('#bgcolor2').onclick = function(){

? ? ? ? e.classList.remove('bgcolor')

? ? }



(三)操作DOM的屬性

獲取和設(shè)置標(biāo)簽自帶的屬性(原生屬性),直接點(diǎn)

let src = img.src //src是圖片標(biāo)簽的原生屬性

獲取設(shè)置 標(biāo)簽自定義的屬性,需要通過(guò)getAttribute()和setAttribute()方法:

setAttribute()方法,設(shè)置元素的屬性值,需要傳兩個(gè)參數(shù)(屬性名和屬性值)

getAttribute()方法,獲取元素的屬性值,只需要傳一個(gè)參數(shù)(屬性名)



(四)創(chuàng)建和刪除DOM屬性

createElement()方法,用于創(chuàng)建DOM元素

appendChild()方法,用于在當(dāng)前DOM元素中添加子元素

刪除元素有兩種寫(xiě)法:

1.自刪 remove()方法,是元素刪除自己

2.通過(guò)父級(jí)刪除子級(jí) removeChild()方法,是刪除元素里面指定的子元素

補(bǔ)充1:onclick是點(diǎn)擊事件,on表示當(dāng),click表示點(diǎn)擊

補(bǔ)充2:parentElement和parentNode屬性,返回父級(jí)元素

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • BOM js的組成部分: 1.ECMAScript,是js的核心語(yǔ)法,目前最新的標(biāo)準(zhǔn)是ES6(ECMAScript...
    王呀呀閱讀 429評(píng)論 0 0
  • JS的組成 ECMAScript js的基礎(chǔ)語(yǔ)法 DOM 文檔對(duì)象模型 BOM ...
    北冥有魚(yú)_425c閱讀 720評(píng)論 0 1
  • DOM0 事件和DOM2級(jí)在事件監(jiān)聽(tīng)使用方式上有什么區(qū)別? DOM 0 級(jí)事件是基于元素內(nèi)聯(lián)屬性或DOM元素命名的...
    邢烽朔閱讀 395評(píng)論 0 0
  • JS之DOM編程 網(wǎng)頁(yè)其實(shí)就是一棵樹(shù)(數(shù)據(jù)結(jié)構(gòu)中的樹(shù)) JS如何操作這棵樹(shù)呢? 那么瀏覽器就往window對(duì)象上加...
    雨溪灘閱讀 719評(píng)論 0 0
  • JavaScript中Dom 1.基本概念 1.1 什么是window? window:是一個(gè)全局對(duì)象, 代表瀏覽...
    煤球快到碗里來(lái)閱讀 291評(píng)論 0 0

友情鏈接更多精彩內(nèi)容