1、DOM:Document Object Model.
document:網(wǎng)頁加載到瀏覽器中時,DOM將網(wǎng)頁文檔轉(zhuǎn)化為一個文檔對象。
Object:JavaScript的對象分為三種類型:
用戶自定義對象(一般不討論這種對象)
內(nèi)建對象(非常重要)
宿主對象(通常稱為BOM:瀏覽器對象模型,不必太糾結(jié)BOM)
Model:模型,或者稱為Map(地圖)
把文檔的各個元素當(dāng)做節(jié)點(diǎn),將文檔構(gòu)成一個“節(jié)點(diǎn)數(shù)”
2、節(jié)點(diǎn)
元素節(jié)點(diǎn):構(gòu)成了文檔模型的框架
文檔節(jié)點(diǎn):文檔的內(nèi)容
屬性節(jié)點(diǎn):決定了文檔的表現(xiàn)形式
元素節(jié)點(diǎn)包含了屬性節(jié)點(diǎn)和文檔節(jié)點(diǎn)
3、獲取元素
getElementById()
寫法:document.getElementById(id) 只有一個參數(shù),返回的結(jié)果是一個元素節(jié)點(diǎn)對應(yīng)的對象
getElementsByTagName( )
寫法:document.getElementsByTagName(tag) 只有一個參數(shù),返回的結(jié)果是一個數(shù)組這個數(shù)組包含的是名為tag的元素節(jié)點(diǎn)的對象
getElementsByClassName( )
寫法:document.getElementsByClassName(class) 只有一個參數(shù),返回的結(jié)果是一個數(shù)組,這個數(shù)組包含的是同一個class名的元素節(jié)點(diǎn)的對象
Tips:1.typeof操作符:可以告訴我們他的操作數(shù)的類型。exp:
typeof document.getElementById(id); 返回的結(jié)果是Object,說明它的操作數(shù)是一個對象
2.通配符“*”:獲取元素的后兩個方法允許把通配符作為它的參數(shù),這意味著,對應(yīng)的每個元素都將被返回在數(shù)組里。
4、獲取和設(shè)置屬性
getAttribute:使用方式:object.getAttribute(attribute);這樣就可以獲取到這個對象的屬性值
判斷某個對象的屬性值是否為空的方法,exp:
var paras = document.getElementsByTagName("p");
for(var i=0;i<paras.length;i++){
var title_text=paras[i].getAttribute("title");
if(title_text!=null) alert(title_text);
}
在檢查某項(xiàng)數(shù)據(jù)是否為null時,if語句可以更簡便:if(title_text) … if(something)與if(something!=null)完全等價
setAttribute:使用方式:object.setAttribute(attribute,value);它允許我們對屬性節(jié)點(diǎn)的值做出修改。
Tips:DOM的工作模式:
先加載文檔的靜態(tài)內(nèi)容,再動態(tài)刷新,動態(tài)刷新時不影響文檔的靜態(tài)內(nèi)容。這正是DOM的真正威力:對頁面內(nèi)容進(jìn)行刷新卻不需要在瀏覽器里刷新頁面。