《JavaScript DOM 編程藝術(shù)》讀書筆記之DOM基礎(chǔ)
DOM
DOM:文檔對(duì)象模型;
節(jié)點(diǎn)
元素節(jié)點(diǎn):DOM的原子是元素節(jié)點(diǎn)。<body>、<p>、<ul>之類的元素。元素可以包含其他的元素。沒有被包含在其他元素里的唯一元素是<html>元素
文本節(jié)點(diǎn):在XHTML文檔里,文本節(jié)點(diǎn)總是被包含在元素節(jié)點(diǎn)的內(nèi)部。
屬性節(jié)點(diǎn):屬性節(jié)點(diǎn)用來(lái)對(duì)元素做出更具體的描述。例如,幾乎每個(gè)元素都有一個(gè)title屬性,而我們可以利用這個(gè)屬性對(duì)包含在元素里的東西作出準(zhǔn)確的描述:
<p title="a gentle reminder">Don't forget to buy this stuff.</p>
在DOM中,title="a gentle reminder"是一個(gè)屬性節(jié)點(diǎn)。
CSS
獲取元素
getElementById, getElementsByTagName, getElementsByClassName三種可以獲取元素節(jié)點(diǎn)的方法。
getElementsByTagName允許把一個(gè)通配符作為它的參數(shù),而這意味著文檔里的每個(gè)元素都將在這個(gè)函數(shù)所返回的數(shù)組里占有一席之地。通配符(“*”)必須在引號(hào)里,這是為了和乘法操作有所區(qū)別。
還可以把getElementById和getElementsByTagName結(jié)合起來(lái)運(yùn)用。如下所示:
var shopping = document.getElementById("purchase");
var items = shopping.getElementsByTagName("*");
這樣就可以得到id屬性值為purchase的元素包含著多少個(gè)元素。
getElementsByClassName方法只有較新的瀏覽器才支持。為了彌補(bǔ)這一點(diǎn),DOM腳本程序員需要使用已有的DOM方法來(lái)實(shí)現(xiàn)自己的getElementsByClassName。而多數(shù)情況下,他們的實(shí)現(xiàn)過(guò)程都與下面這個(gè)getElementsByClassName大致相似:
function getElementsByClassName(node, classname){
if(node.getElementsByClassName){
return node.getElementsByClassName(classname);
}else{
var results = new Array();
var elems = node.getElementsByTagName("*");
for(var i=0;i<elems.length;i++){
if(elems[i].className.indexOf(classname) != -1){
results[results.length] = elems[i];
}
}
return results;
}
}
這個(gè)getElementsByClassName函數(shù)接受兩個(gè)參數(shù),第一個(gè)node表示DOM樹中的搜素起點(diǎn),第二個(gè)classname就是要搜索的類名了。
獲取和設(shè)置屬性
getAttribute是一個(gè)函數(shù),它只有一個(gè)參數(shù)——你打算查詢的屬性的名字:
object.getAttribute(attribute)
setAttribute()允許我們對(duì)屬性節(jié)點(diǎn)的值做出修改。通過(guò)setAttribute對(duì)文檔作出修改后,在通過(guò)瀏覽器的view source(查看源代碼)選項(xiàng)去查看文檔的源代碼時(shí)看到的仍將是改變前的屬性值,也就是說(shuō),setAttribute做出的修改不會(huì)反映在文檔本身的源代碼里。這種“表里不一”的現(xiàn)象源自DOM的工作模式:先加載文檔的靜態(tài)內(nèi)容,再動(dòng)態(tài)刷新,動(dòng)態(tài)刷新不影響文檔的靜態(tài)內(nèi)容。這正是DOM的真正威力:對(duì)頁(yè)面內(nèi)容進(jìn)行刷新卻不需要在瀏覽器里刷新頁(yè)面。
- Javascript & DHTML 實(shí)例編程(教程)DOM基礎(chǔ)和基本API
- Javascript & DHTML DOM基礎(chǔ)和基本API
- javascript DOM 操作基礎(chǔ)知識(shí)小結(jié)
- Dom 結(jié)點(diǎn)創(chuàng)建 基礎(chǔ)知識(shí)
- javascript學(xué)習(xí)基礎(chǔ)筆記之DOM對(duì)象操作
- javascript 基礎(chǔ)篇4 window對(duì)象,DOM
- Javascript基礎(chǔ)知識(shí)(三)BOM,DOM總結(jié)
- JavaScript基礎(chǔ)語(yǔ)法、dom操作樹及document對(duì)象
相關(guān)文章
原生js實(shí)現(xiàn)拖拽移動(dòng)與縮放效果
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)拖拽移動(dòng)與縮放效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08JavaScript裝飾器函數(shù)(Decorator)實(shí)例詳解
這篇文章主要介紹了JavaScript裝飾器函數(shù)(Decorator),結(jié)合實(shí)例形式分析了JavaScript裝飾器函數(shù)(Decorator)的功能、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-03-03JS前端開發(fā)模擬虛擬dom轉(zhuǎn)真實(shí)dom詳解
這篇文章主要為大家介紹了JS前端開發(fā)模擬虛擬dom轉(zhuǎn)真實(shí)dom詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01詳解用函數(shù)式編程對(duì)JavaScript進(jìn)行斷舍離
本篇文章主要介紹了用函數(shù)式編程對(duì)JavaScript進(jìn)行斷舍離,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09