DOm的知識(shí)總結(jié)

目錄:

1什么是dom

DOM--文檔對(duì)象模型;dom可以以一種獨(dú)立于平臺(tái)和語言的方式訪問和修改一格 文檔的內(nèi)容和結(jié)構(gòu)

DOM 是 W3C(萬維網(wǎng)聯(lián)盟)的標(biāo)準(zhǔn)。

"W3C 文檔對(duì)象模型 (DOM) 是中立于平臺(tái)和語言的接口,它允許程序和腳本動(dòng)態(tài)地訪問和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。"

XML DOM 是用于獲取、更改、添加或刪除 XML 元素的標(biāo)準(zhǔn)。

dom的級(jí)別

1級(jí)dom--DOM核心能映射以XML為基礎(chǔ)的文檔結(jié)構(gòu),允許獲取和操作文檔的任意部分。

2級(jí)dom--過對(duì)象接口增加了對(duì)鼠標(biāo)和用戶界面事件(DHTML長期支持鼠標(biāo)與用戶界面事件)、范圍、遍歷(重復(fù)執(zhí)行DOM文檔)和層疊樣式表(CSS)的支持

dom優(yōu)點(diǎn)和缺點(diǎn):

優(yōu)勢(shì):易用性強(qiáng),遍歷簡單

缺點(diǎn):效率低,解析速度慢,內(nèi)存占用量過高,對(duì)于大文件不可以使用!消耗時(shí)間久,DOM機(jī)制中所運(yùn)用的大量對(duì)象的創(chuàng)建和銷毀無疑會(huì)影響其效率。

解決方案:

DOM訪問和操作是現(xiàn)代網(wǎng)頁應(yīng)用中很重要的一部分。但每次你通過“橋梁”從ECMAScript到DOM時(shí),都會(huì)被收取“過路費(fèi)”。為減少DOM編程中的性能損失!

一.最小號(hào)dom訪問在js端做精可能多的是

function innerHTMLLoop2() { var content = ''; for (var count = 0; count < 15000; count++) { content += 'a';

} document.getElementById('here').innerHTML += content;}

二。在反復(fù)訪問的地方使用局部變量存放DOM引用。

三。小心地處理HTML集合,因?yàn)樗麄儽憩F(xiàn)出“存在性”,總是對(duì)底層文檔重新查詢。將集合length屬性緩存到一個(gè)變量中,在迭代中使用這個(gè)變。如果經(jīng)常操作這個(gè)集合,可以將集體拷貝到數(shù)組中。

四??赡艿脑?,使用速度更快的API,諸如querySelectorAll()和firstElementChild。

下列瀏覽器支持選擇器API:Internet Explorer 8,F(xiàn)irefox 3.5,Safari 3.1,Chrome 1,Opera

五。注重重繪和重排版:批量修改風(fēng)格,離線操作DOM樹,緩存并減少對(duì)布局信息的訪問。

)批量修改

重排版和重繪代價(jià)昂貴,所以,提高程序響應(yīng)速度一個(gè)好策略是減少此類操作發(fā)生的機(jī)會(huì)。為減少發(fā)生

次數(shù),你應(yīng)該將多個(gè)DOM 和風(fēng)格改變合并到一個(gè)批次中一次性執(zhí)行。

六。動(dòng)畫中使用絕對(duì)坐標(biāo),使用拖放代理。

七。使用事件托管技術(shù)最小化事件句柄數(shù)量。

?

2.dom tree--

1用來與html等網(wǎng)絡(luò)文檔元素交互而引入的提供API

2.? DOMtree不是網(wǎng)頁瀏覽器必要的,而是為了jsp而做的。(如果沒有jsp,可以不需要建立DOMtree也能渲染整個(gè)頁面)

?

3,節(jié)點(diǎn)的屬性

?

  • nodeName(節(jié)點(diǎn)名稱)
  • nodeValue(節(jié)點(diǎn)值)
  • nodeType(節(jié)點(diǎn)類型)
  • nodeType 屬性可返回節(jié)點(diǎn)的類型。

    最重要的節(jié)點(diǎn)類型是:

    元素類型節(jié)點(diǎn)類型元素1屬性2文本3注釋8文檔9

    4.元素對(duì)象的方法和屬性相關(guān)的方法

    Js節(jié)點(diǎn)屬性與方法

    屬性:

    • Attributes 存儲(chǔ)節(jié)點(diǎn)的屬性列表(只讀)
    • childNodes 存儲(chǔ)節(jié)點(diǎn)的子節(jié)點(diǎn)列表(只讀)
    • dataType 返回此節(jié)點(diǎn)的數(shù)據(jù)類型
    • Definition 以DTD或XML模式給出的節(jié)點(diǎn)的定義(只讀)
    • Doctype 指定文檔類型節(jié)點(diǎn)(只讀)
    • documentElement 返回文檔的根元素(可讀寫)
    • firstChild 返回當(dāng)前節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)(只讀)
    • Implementation 返回XMLDOMImplementation對(duì)象
    • lastChild 返回當(dāng)前節(jié)點(diǎn)最后一個(gè)子節(jié)點(diǎn)(只讀)
    • nextSibling 返回當(dāng)前節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn)(只讀)
    • nodeName 返回節(jié)點(diǎn)的名字(只讀)
    • nodeType 返回節(jié)點(diǎn)的類型(只讀)
    • nodeTypedValue 存儲(chǔ)節(jié)點(diǎn)值(可讀寫)
    • nodeValue 返回節(jié)點(diǎn)的文本(可讀寫)
    • ownerDocument 返回包含此節(jié)點(diǎn)的根文檔(只讀)
    • parentNode 返回父節(jié)點(diǎn)(只讀)
    • Parsed 返回此節(jié)點(diǎn)及其子節(jié)點(diǎn)是否已經(jīng)被解析(只讀)
    • Prefix 返回名稱空間前綴(只讀)
    • preserveWhiteSpace 指定是否保留空白(可讀寫)
    • previousSibling 返回此節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)(只讀)
    • Text 返回此節(jié)點(diǎn)及其后代的文本內(nèi)容(可讀寫)
    • url 返回最近載入的XML文檔的URL(只讀)
    • Xml 返回節(jié)點(diǎn)及其后代的XML表示(只讀)
    • nextSibling 返回相領(lǐng)的節(jié)點(diǎn)

    方法:

    • appendChild 為當(dāng)前節(jié)點(diǎn)添加一個(gè)新的子節(jié)點(diǎn),放在最后的子節(jié)點(diǎn)后
    • cloneNode 返回當(dāng)前節(jié)點(diǎn)的拷貝
    • createAttribute 創(chuàng)建新的屬性
    • createCDATASection 創(chuàng)建包括給定數(shù)據(jù)的CDATA段
    • createComment 創(chuàng)建一個(gè)注釋節(jié)點(diǎn)
    • createDocumentFragment 創(chuàng)建DocumentFragment對(duì)象
    • createElement 創(chuàng)建一個(gè)元素節(jié)點(diǎn)
    • createEntityReference 創(chuàng)建EntityReference對(duì)象
    • createNode 創(chuàng)建給定類型,名字和命名空間的節(jié)點(diǎn)
    • createPorcessingInstruction 創(chuàng)建操作指令節(jié)點(diǎn)
    • createTextNode 創(chuàng)建包括給定數(shù)據(jù)的文本節(jié)點(diǎn)
    • getElementsByTagName 返回指定名字的元素集合
    • hasChildNodes 返回當(dāng)前節(jié)點(diǎn)是否有子節(jié)點(diǎn)
    • insertBefore 在指定節(jié)點(diǎn)前插入子節(jié)點(diǎn)
    • Load 導(dǎo)入指定位置的XML文檔
    • loadXML 導(dǎo)入指定字符串的XML文檔
    • removeChild 從子結(jié)點(diǎn)列表中刪除指定的子節(jié)點(diǎn)
    • replaceChild 從子節(jié)點(diǎn)列表中替換指定的子節(jié)點(diǎn)
    • Save 把XML文件存到指定節(jié)點(diǎn)
    • selectNodes 對(duì)節(jié)點(diǎn)進(jìn)行指定的匹配,并返回匹配節(jié)點(diǎn)列表
    • selectSingleNode 對(duì)節(jié)點(diǎn)進(jìn)行指定的匹配,并返回第一個(gè)匹配節(jié)點(diǎn)
    • transformNode 使用指定的樣式表對(duì)節(jié)點(diǎn)及其后代進(jìn)行轉(zhuǎn)換
    • transformNodeToObject 使用指定的樣式表將節(jié)點(diǎn)及其后代轉(zhuǎn)換為對(duì)象

    5.訪問節(jié)點(diǎn):--通過不同的方法查找希望操作的元素

    document.getaELementById(id)

    document.getElementsByTagName()

    document.getElementsByName();

    document.getElementsByClassName();

    document.querySelector
    document.querySelectorAll 優(yōu)點(diǎn)是查找快,缺點(diǎn)兼容性差

    querySelector 和 querySelectorAll 方法是 W3C Selectors API 規(guī)范中定義的。他們的作用是根據(jù) CSS 選擇器規(guī)范,便捷定位文檔中指定元素。

    querySelector 和 querySelectorAll 方法很好用,可惜IE6、IE7不支持,怎么讓IE6、IE7也支持querySelectorAll和querySelector這兩個(gè)方法呢,

    DOM2級(jí)樣式規(guī)范為style定義了一些屬性和方法

    屬性或方法

    說明

    cssText

    訪問或設(shè)置style中的CSS代碼

    length

    CSS屬性的數(shù)量

    parentRule

    CSS信息的CSSRule對(duì)象

    getPropertyCSSValue(name)

    返回包含給定屬性值的CSSValue對(duì)象

    getPropertyPriority(name)

    如果設(shè)置了!important,則返回,否則返回空字符串

    item(index)

    返回指定位置CSS屬性名稱

    removeProperty(name)

    從樣式中刪除指定屬性

    setProperty(name,v,p)

    給屬性設(shè)置為相應(yīng)的值,并加上優(yōu)先權(quán)

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

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

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