DOM常用API總結(jié)

本文主要是對常用的API進(jìn)行一次通讀了解,方便在以后的學(xué)習(xí)過程中能夠有所印象

類型

這些Node類型中,我們最常用的就是element,text,attribute,comment,document,document_fragment這幾種類型。

  • <b>Element類型</b>:對元素標(biāo)簽名,子節(jié)點和特性的訪問,我們常用HTML元素比如div,span,a等標(biāo)簽就是element中的一種。
  • <b>Text類型</b>:表示文本節(jié)點,它包含的是純文本內(nèi)容,不能包含html代碼,但可以包含轉(zhuǎn)義后的html代碼。
  • <b>Attr類型</b>:表示元素的特性,相當(dāng)于元素的attributes屬性中的節(jié)點。
  • <b>Comment類型</b>:表示HTML文檔中的注釋。
  • <b>Document類型</b>:Document表示文檔。 在瀏覽器中,document對象是HTMLDocument的一個實例,表示整個頁面,它同時也是window對象的一個屬性。
  • <b>DocumentFragment類型</b>:是所有節(jié)點中唯一一個沒有對應(yīng)標(biāo)記的類型,它表示一種輕量級的文檔,可能當(dāng)作一個臨時的倉庫用來保存可能會添加到文檔中的節(jié)點。

節(jié)點創(chuàng)建型API

將API細(xì)分后,首先介紹的是創(chuàng)建型API,用途是創(chuàng)建節(jié)點。
不過要注意的是,創(chuàng)建的元素并不屬于html文檔,它只是創(chuàng)建出來,并未添加到html文檔中

  1. createElement
    通過傳入指定的一個標(biāo)簽名來創(chuàng)建一個元素,如果傳入的標(biāo)簽名是一個未知的,則會創(chuàng)建一個自定義的標(biāo)簽。
var div = document.createElement("div");
  1. createTextNode
    創(chuàng)建一個文本節(jié)點
var textNode = document.createTextNode("一個TextNode");
  1. cloneNode
    用來返回調(diào)用方法的節(jié)點的一個副本,它接收一個bool參數(shù),用來表示是否復(fù)制子元素.
var parent = document.getElementById("parentElement"); 
var parent2 = parent.cloneNode(true);// 傳入true
parent2.id = "parent2";

這段代碼通過cloneNode復(fù)制了一份parent元素,其中cloneNode的參數(shù)為true,表示parent的子節(jié)點也被復(fù)制,如果傳入false,則表示只復(fù)制了parent節(jié)點。

  1. createDocumentFragment
    創(chuàng)建一個DocumentFragment,存儲臨時的節(jié)點用來準(zhǔn)備添加到文檔中。

創(chuàng)建型API總結(jié)

創(chuàng)建型api主要包括createElement,createTextNode,cloneNode和createDocumentFragment四個方法,需要注意下面幾點:
(1)它們創(chuàng)建的節(jié)點只是一個孤立的節(jié)點,要通過appendChild添加到文檔中
(2)cloneNode要注意如果被復(fù)制的節(jié)點是否包含子節(jié)點以及事件綁定等問題
(3)使用createDocumentFragment來解決添加大量節(jié)點時的性能問題

頁面修改型API

如果修改的節(jié)點是頁面上的節(jié)點,則會移動該節(jié)點到指定位置,并且保留其綁定的事件。

  1. appendChild
    將指定的節(jié)點添加到調(diào)用該方法的節(jié)點的子元素的末尾。
parent.appendChild(child);
  1. insertBefore
    添加一個節(jié)點到一個參照節(jié)點之前
parentNode.insertBefore(newNode,refNode);
  1. removeChild
    刪除指定的子節(jié)點并返回
    不過它等于node,被刪除的節(jié)點仍然存在于內(nèi)存中
var deletedChild = parent.removeChild(node);
  1. replaceChild
1
parent.replaceNode(newChild,oldChild);

節(jié)點查詢型API

  1. document.getElementById
    根據(jù)元素id返回元素,返回值是Element類型,如果不存在該元素,則返回null。

  2. document.getElementsByTagName
    根據(jù)元素標(biāo)簽名獲取元素,返回一個即時的HTMLCollection類型

  3. document.getElementsByName
    通過指定的name屬性來獲取元素,它返回一個即時的NodeList對象。

  4. document.getElementsByClassName
    根據(jù)元素的class返回一個即時的HTMLCollection

var elements = document.getElementsByClassName(names);

可以傳入多個classname,中間需要加上空格

  1. document.querySelector和document.querySelectorAll
    都是通過css選擇器來查找元素,不過有細(xì)微的差別。
  • document.querySelector。
    返回第一個匹配的元素,如果沒有匹配的元素,則返回null。
  • document.querySelectorAll
    返回的是所有匹配的元素,而且可以匹配多個選擇符

節(jié)點關(guān)系型api

在html文檔中的每個節(jié)點之間的關(guān)系都可以看成是家譜關(guān)系,包含父子關(guān)系,兄弟關(guān)系等等,下面我們依次來看看每一種關(guān)系。

  1. 父關(guān)系型api
  • <b>parentNode</b>:每個節(jié)點都有一個parentNode屬性,它表示元素的父節(jié)點。Element的父節(jié)點可能是Element,Document或DocumentFragment。

  • <b>parentElement</b>:返回元素的父元素節(jié)點,與parentNode的區(qū)別在于,其父節(jié)點必須是一個Element,如果不是,則返回null.

  1. 兄弟關(guān)系型api
  • <b>previousSibling</b>:節(jié)點的前一個節(jié)點,如果該節(jié)點是第一個節(jié)點,則為null。
  • <b>previousElementSibling</b>:返回前一個元素節(jié)點,前一個節(jié)點必須是Element.
  • <b>nextSibling</b>:節(jié)點的后一個節(jié)點,如果該節(jié)點是最后一個節(jié)點,則為null。
  • <b>nextElementSibling</b>:返回后一個元素節(jié)點,后一個節(jié)點必須是Element.
  1. 子關(guān)系型api
  • <b>childNodes</b>:返回一個即時的NodeList,表示元素的子節(jié)點列表.
  • <b>children</b>:一個即時的HTMLCollection,子節(jié)點都是Element
  • <b>firstNode</b>:第一個子節(jié)點
  • <b>lastNode</b>:最后一個子節(jié)點
    hasChildNodes方法:可以用來判斷是否包含子節(jié)點。

元素樣式型api

  1. window.getComputedStyle
    用來獲取應(yīng)用到元素后的樣式,假設(shè)某個元素并未設(shè)置高度而是通過其內(nèi)容將其高度撐開,這時候要獲取它的高度就要用到getComputedStyle
var style = window.getComputedStyle(element[, pseudoElt]);
  1. getBoundingClientRect
    用來返回元素的大小以及相對于瀏覽器可視窗口的位置
var clientRect = element.getBoundingClientRect();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,967評論 2 374

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

  • Node類型 DOM1級定義了一個Node接口,該接口由DOM中所有節(jié)點類型實現(xiàn)。這個Node接口在JS中是作為N...
    Maggie_77閱讀 424評論 0 0
  • 原文 鏈接 關(guān)注公眾號獲取更多資訊 一、基本類型介紹 1.1 Node類型 DOM1級定義了一個Node接口,該接...
    前端進(jìn)階之旅閱讀 3,945評論 7 34
  • 本章內(nèi)容 理解包含不同層次節(jié)點的 DOM 使用不同的節(jié)點類型 克服瀏覽器兼容性問題及各種陷阱 DOM 是針對 HT...
    悶油瓶小張閱讀 654評論 0 1
  • 外界的夸獎,有時候是另外一種束縛。不自然的就將我慢慢的變得表現(xiàn)型人格。“干”的時候就會害怕做錯,內(nèi)心不夠坦然。而且...
    夢夕夢閱讀 163評論 0 0
  • 深秋初冬的午后,陽光滿滿的時候,是我最愜意的小時光。也許,是天生對陽光的迷戀。總在在這樣的季節(jié),感覺陽光特別的暖。...
    悠我悠心閱讀 448評論 1 2