初識DOM

1. DOM概念

DOM(Document Object Model)文檔對象模型嚎京。
DOM是關于創(chuàng)建既穆,插入,修改起胰,刪除頁面元素的標準久又,賦予了我們操作頁面的能力。

頁面上的內容本質上都是字符串待错,但是JS把這些字符串解析成了DOM樹籽孙,DOM樹中的內容會被解析成DOM節(jié)點。也就是說火俄,我們在操作DOM的本質就是在操作DOM中的每一個節(jié)點犯建。頁面中的任何內容都是節(jié)點。

2. 節(jié)點

2.1 childNodes

childNodes 返回元素下的第一層所有子節(jié)點的集合瓜客,包含回車适瓦,文字,注釋谱仪。

語法:

元素.childNodes

每一個節(jié)點都會有一個對應的下標玻熙,它還有一個length屬性,代表子節(jié)點的個數(shù)疯攒。

<div id="box" class="clBox" style="background: #f00;">
    <p></p>
    kaivon
    <!--這里是注釋-->
</div>   

var box=document.getElementById("box");
var child=box.childNodes;
console.log(child);     //返回元素中所有的節(jié)點

2.2 nodeType

nodeType 返回節(jié)點的類型嗦随,這個節(jié)點類型是一個數(shù)字。

語法:

節(jié)點.nodeType

節(jié)點的類型如下: (括號里為返回值)

節(jié)點類型 節(jié)點描述 節(jié)點返回值
Node.ELEMENT_NODE 元素節(jié)點 1
Node.ATTRIBUTE_NODE 屬性節(jié)點 2
Node.TEXT_NODE 文本節(jié)點 3
Node.CDATA_SECTION_NODE XMLCDMA片段節(jié)點 4
Node.ENTITY_REFERENCE_NODE 實體引用 5
Node.ENTITY_NODE 實體 6
Node.PROCESSING_INSTRUCTION_NODE 處理指令 7
Node.COMMENT_NODE 注釋 8
Node.DOCUMENT_NODE 文檔 9
Node.DOCUMENT_TYPE_NODE 文檔實體接口 10
Node.DOCUMENT_FRAGMENT_NODE 輕量級文檔對象 11
Node.NOTATION_NODE DTD中聲明的符號 12
console.log(box.nodeType);      //1         標簽

2.3 nodeName

nodeName 返回節(jié)點的名字敬尺。

語法:

節(jié)點.nodeName
console.log(box.nodeName);      //DIV   返回的節(jié)點名字大小寫根據(jù)瀏覽器不同會出現(xiàn)不同枚尼。 

2.4 attributes

attributes 返回元素所有屬性的集合贴浙。 每一個元素都有一個對應的下標,它還有一個length屬性署恍,代表屬性的個數(shù)崎溃。

語法:

元素.attributes
var attr=box.attributes;
console.log(attr);
//元素節(jié)點
console.log(box.nodeType);      //1         標簽
console.log(box.nodeName);      //DIV   

//屬性節(jié)點
console.log(attr[0].nodeType);  //2         屬性
console.log(attr[0].nodeName);  //id        id
                
//文本節(jié)點
console.log(child[0].nodeType); //3         文本
console.log(child[0].nodeName); //#text     
                
//注釋節(jié)點
console.log(child[3].nodeType); //8         注釋
console.log(child[3].nodeName); //#comment  
                
//文檔節(jié)點
console.log(document.nodeType); //9         文檔
console.log(document.nodeName); //#document 

3. tagName

tagName 返回元素的標簽名。

語法:

元素.tagName

只有標簽元素才有這個屬性盯质。

要與nodeName區(qū)分開來袁串,區(qū)別:
tagName只有標簽名才有這個屬性,nodeName是任何節(jié)點都有這個屬性呼巷。

console.log(document.body.tagName)       //BODY
console.log(document.body.nodeName)      //BODY

console.log(document.body.childNodes[0].nodeName)   //#text
console.log(document.body.childNodes[0].tagName)    //undefined

4. 獲取父節(jié)點

parentNode返回這個節(jié)點的父節(jié)點囱修。 不能操作屬性節(jié)點(使用屬性節(jié)點無法獲取父節(jié)點)

語法:

節(jié)點.parentNode
<div id="box" class="clBox" >
    aaaaa
    <span id="sp" class="clBox" ></span>
</div>

<script>
    var box=document.getElementById("box");
    var sp=document.getElementById("sp");
    var attrs1=sp.attributes[0];
    var attrs=box.attributes[0];
    
    console.log(box.childNodes[0].parentNode);
    console.log(attrs.parentNode);      //null
    console.log(attrs1.parentNode);     //null
</script>

5. 獲取子節(jié)點

5.1 childNode

childNodes 返回元素下的第一層所有子節(jié)點的集合,包含回車朵逝,文字蔚袍,注釋。

語法:

元素.childNodes

每一個節(jié)點都會有一個對應的下標配名,它還有一個length屬性啤咽,代表子節(jié)點的個數(shù)。

5.2 children

children 返回元素下的第一層所有子節(jié)點的集合渠脉,但是只包含標簽元素宇整。
它同樣是一個類數(shù)字,擁有length屬性芋膘,返回的節(jié)點都有一個對應的下標鳞青。

語法:

元素.children

這個屬性返回的結果都是標簽,但是他是非標準的

5.3 firstElementChild

firstElementChild 返回這個元素(父節(jié)點)下的第一個子節(jié)點为朋,如果沒有臂拓,則返回null

語法:

元素.firstElementChild

5.4 lastElementChild

lastElementChild 返回這個元素(父元素)下的最后一個子節(jié)點,如果沒有习寸,則返回null

語法:

元素.lastElementChild

6.獲取兄弟節(jié)點

previousElementSibling

previousElementSibling 返回這個節(jié)點的上一個兄弟節(jié)點胶惰,如果沒有,返回一個null

語法:

節(jié)點.previousElementSibling

nextElementSibling

nextElementSibling 返回下一個兄弟節(jié)點霞溪,如果沒有孵滞,那么會返回一個null

語法:

節(jié)點.nextElementSibling

屬性節(jié)點沒有兄弟節(jié)點。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鸯匹,一起剝皮案震驚了整個濱河市坊饶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殴蓬,老刑警劉巖匿级,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡根蟹,警方通過查閱死者的電腦和手機脓杉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門糟秘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來简逮,“玉大人,你說我怎么就攤上這事尿赚∩⑹” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵凌净,是天一觀的道長悲龟。 經常有香客問我,道長冰寻,這世上最難降的妖魔是什么须教? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮斩芭,結果婚禮上轻腺,老公的妹妹穿的比我還像新娘。我一直安慰自己划乖,他們只是感情好贬养,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著琴庵,像睡著了一般误算。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迷殿,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天儿礼,我揣著相機與錄音,去河邊找鬼庆寺。 笑死蚊夫,一個胖子當著我的面吹牛,可吹牛的內容都是我干的止邮。 我是一名探鬼主播这橙,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼导披!你這毒婦竟也來了屈扎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撩匕,失蹤者是張志新(化名)和其女友劉穎鹰晨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡模蜡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年漠趁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忍疾。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡闯传,死狀恐怖,靈堂內的尸體忽然破棺而出卤妒,到底是詐尸還是另有隱情甥绿,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布则披,位于F島的核電站共缕,受9級特大地震影響,放射性物質發(fā)生泄漏士复。R本人自食惡果不足惜图谷,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阱洪。 院中可真熱鬧便贵,春花似錦、人聲如沸澄峰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俏竞。三九已至绸硕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魂毁,已是汗流浹背玻佩。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留席楚,地道東北人咬崔。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像烦秩,于是被迫代替她去往敵國和親垮斯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容

  • ??DOM(文檔對象模型)是針對 HTML 和 XML 文檔的一個 API(應用程序編程接口)。 ??DOM 描繪...
    霜天曉閱讀 3,649評論 0 7
  • ??DOM 1 級主要定義的是 HTML 和 XML 文檔的底層結構曙旭。 ??DOM2 和 DOM3 級則在這個結構...
    霜天曉閱讀 1,446評論 1 3
  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構)晶府,知道了CSS樣式(也稱為表示)桂躏,會使用HT...
    凜0_0閱讀 2,774評論 0 8
  • 第1章 認識JS JavaScript能做什么?1.增強頁面動態(tài)效果(如:下拉菜單川陆、圖片輪播剂习、信息滾動等)2.實現(xiàn)...
    mo默22閱讀 1,295評論 0 5
  • 感恩冥想 1、感恩哥哥接送我去上班书劝,祝福哥哥早日找到自己的人生目標 2进倍、感恩小紅姐中午晚上準備午餐晚餐,祝福姐姐能...
    欒宜閱讀 143評論 0 0