DOM

1. 節(jié)點類型nodeType

1 element(元素)
2 attribute(屬性)
3 text(文本)
8 comment(注釋)
9 document

2. 節(jié)點關(guān)系

childNodes 訪問元素的子節(jié)點,其中保存著一個NodeList對象,它是一種類數(shù)組對象。將NodeList轉(zhuǎn)換為數(shù)組:

function convertToArray(nodes) {
    var array = null;
    try {
        array = Array.prototype.slice.call(nodes,0);
    } catch (ex) {
        array = new Array();
        for(var i = 0, len = nodes.length; i < len; i++) {
            array.push(nodes[i]);
        }
    }
    return array;
}

parentNode 指向文檔樹中的父節(jié)點
previousSibling 訪問節(jié)點的上一個同胞(兄弟)節(jié)點
nextSibling 訪問節(jié)點的下一個同胞(兄弟)節(jié)點
firstChild 指向childNodes列表中的第一個子節(jié)點
lastChild 指向childNodes列表中的最后一個子節(jié)點,只有一個節(jié)點的情況下,firstChild和lastChild指向同一個節(jié)點,如果沒有子節(jié)點,則均為null
ownerDocument 指向表示整個文檔的文檔節(jié)點
hasChildNodes() 在節(jié)點包含一個或多個子節(jié)點的情況下返回true

(以下屬性返回的元素都不包含空白文本節(jié)點)
childElementCount 返回子元素(不包括文本節(jié)點和注釋)的個數(shù)
firstElementChild 指向第一個子元素
lastElementChild 指向最后一個子元素
previousElementSibling 指向前一個同輩元素
nextElementSibling 指向后一個同輩元素
children 指向元素中同樣還是元素的子節(jié)點

contains(node) 被檢測的節(jié)點是不是該節(jié)點的后代。接收一個參數(shù),即要檢測的后代節(jié)點,是返回true,否則返回false

3. 操作節(jié)點

appendChild(someNode) 向childNodes的末尾添加一個節(jié)點,如果傳入到appendChild()中的節(jié)點已經(jīng)是文檔的一部分了,那結(jié)果就是將該節(jié)點從原來的的位置移到新位置
insertBefore(newNode, someNode) 在某個特定的位置之前插入節(jié)點,接收兩個參數(shù),分別是要插入的節(jié)點和作為參考的節(jié)點,如果參照節(jié)點是null,那么insertBefore()和appendChild()執(zhí)行相同的操作
replaceChild(newNode, replaceNode) 替換某個指定的節(jié)點。接收兩個參數(shù),分別是要插入的節(jié)點和要替換的節(jié)點
removeNode(someNode) 移除某個節(jié)點。

cloneNode() 復(fù)制某個節(jié)點。接收一個布爾值,表示是否進行深復(fù)制。參數(shù)為true,執(zhí)行深復(fù)制,即復(fù)制節(jié)點及其整個子節(jié)點樹;參數(shù)為false,執(zhí)行淺復(fù)制,只復(fù)制節(jié)點本身
normalize() 處理文檔樹種的文本節(jié)點。如果在包含兩個或多個文本節(jié)點的父元素上調(diào)用normalize()方法,則會將所有文本節(jié)點合并成一個節(jié)點

4. 文檔子節(jié)點和文檔信息

document.documentElement 取得對<html>的引用
document.body 取得對<body>的引用
document.doctype 取得對<!DOCTYPE>的引用(瀏覽器對其的支持差別很大)

document.title 取得文檔的標(biāo)題
document.URL 取得完整的URL
document.domain 取得域名
document.referrer 取得鏈接到當(dāng)前頁面的那個頁面的URL

5. 查找元素

document.getElementById() 通過元素的ID查找,唯一性
document.getElementsByTagName() 通過標(biāo)簽名
document.getElementsByName() 通過元素的Name屬性的值(IE容錯能力較強,會得到一個數(shù)組,其中包括id等于name值的),只用HTMLDocument類型才有

(擴展)
querySelector() 接收一個CSS選擇符,返回與該選擇符匹配的第一個元素
querySelectorAll() 接收一個CSS選擇符,返回所有匹配的元素,返回的是一個NodeList的實例
matchesSelector() 接收一個CSS選擇符,如果調(diào)用元素與該選擇符匹配,返回true,否則,返回false。(大多數(shù)瀏覽器還不支持,需要加前綴ms/moz/webkit才支持)
getElementsByClassName() (HTML5新增)通過類名查找,可以接收一個或多個類名

6. 取得特性

getAttribute() 獲得特性,一個參數(shù),要獲取的特性名
setAttribute() 設(shè)置特性,兩個參數(shù),要設(shè)置的特性名和值
removeAttribute() 刪除特性

7. 創(chuàng)建元素

document.createElement() 創(chuàng)建新元素,接收一個參數(shù),即要創(chuàng)建元素的標(biāo)簽名
document.createTextNode() 創(chuàng)建新文本節(jié)點,接收一個參數(shù),即要插入節(jié)點的文本
document.createDocumentFragment() 創(chuàng)建文檔片段,文檔片段是一種“輕量級”的文檔,可以包含和控制節(jié)點,但不會像完整文檔那樣占用額外的資源

8. 其他

classLists HTML5新增,一種操作類名的方式,可以獲得元素類名的集合
document.activeElement 指向DOM中當(dāng)前獲得了焦點的元素,文檔加載期間為null,文檔加載完成后保存的是document.body中的元素的引用
document.hasFocus() 用于確定文檔是否獲得了焦點
document.readyState 有兩個可能的值,loading(正在加載文檔)和complete(已經(jīng)加載完文檔),通常通過它來實現(xiàn)一個指示文檔已經(jīng)加載完成的指示器
document.compatMode 告訴開發(fā)人員瀏覽器采用了那種渲染模式。在標(biāo)準(zhǔn)模式下,它的值為“CSS1Compat”,而在混雜模式下,它的值為“BackCompat”
document.head HTML新增,引用文檔的<head>元素
dataset HTML5規(guī)定可以為元素添加非標(biāo)準(zhǔn)的屬性,但要添加前綴data-。通過dataset可以來訪問自定義的屬性的值,如:

<div data-appId="1234"></div>

var appid = div.dataset.appId;

innerHTML 返回與調(diào)用元素的所有子節(jié)點(包括元素、注釋和文本節(jié)點)對應(yīng)的HTML標(biāo)記
outerHTML 返回調(diào)用它的元素及所有子節(jié)點的HTML標(biāo)簽
innerText 元素中包含的所有文本的內(nèi)容,包括自文檔樹中的文本。它會過濾掉HTML標(biāo)簽,將其轉(zhuǎn)化為文本。如:

<div id="content">Hello World!</div>

div.innerText = "Hello & welcome, <b>\"reader\"!</b>";
//會變成
<div id="content">Hello &amp; welcome, &lt;b&bt;&quot;reader&quot;!&lt;b&bt;&quot;</div>

outerText 除了作用范圍擴大到了包圍調(diào)用它的節(jié)點之外,與innerText沒有多大區(qū)別

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

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

  • DOM(文檔對象模型)是針對 HTML 和 XML 文檔的一個 API。DOM 描繪了一個層次化的節(jié)點樹,允許開發(fā)...
    劼哥stone閱讀 923評論 8 6
  • 節(jié)點層次 DOM 可以將任何 HTML 和 XML 文檔描繪成一個由多層節(jié)點構(gòu)成的結(jié)構(gòu)。節(jié)點分為幾種不同的類型,每...
    云之外閱讀 588評論 0 1
  • 本章內(nèi)容 理解包含不同層次節(jié)點的 DOM 使用不同的節(jié)點類型 克服瀏覽器兼容性問題及各種陷阱 DOM 是針對 HT...
    悶油瓶小張閱讀 786評論 0 1
  • 好好的一天,晚上看到透析袋破了,覺得整個人都不好了……不得不重新開始,希望另外一個明天千萬不要破啊……希望明天有結(jié)...
    好夢不遙遠(yuǎn)閱讀 292評論 1 1
  • 青島棧橋是青島海濱風(fēng)景區(qū)的景點之一,是國務(wù)院于1982年首批公布的國家級風(fēng)景名勝區(qū)、國家AAAA級旅游景區(qū)。青島棧...
    llllllHllllll閱讀 1,230評論 0 0

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