Day10 DOM

自定義屬性及getAttribute方法

  • getAttribute() 獲取特定元素節(jié)點(diǎn)屬性的值,某些低版本瀏覽器不支持.
for(var i=0;i<aLi.length;i++){
                aLi[i].index=i;//js代碼添加自定義的屬性(自定義索引)  在ie8下面能夠看到這個(gè)屬性。chrome可以使用但是看不到
            }
  • setAttribute() 設(shè)置特定元素節(jié)點(diǎn)屬性的值,某些低版本瀏覽器不支持
  • removeAttribute() 移除特定元素節(jié)點(diǎn)屬性,某些低版本瀏覽器不支持

outerHTML/innerHTML/innerText

  • innerHTML(可讀可寫(xiě)):獲取和設(shè)置元素節(jié)點(diǎn)里的內(nèi)容,從對(duì)象的起始位置到終止位置的全部?jī)?nèi)容,不包括自身Html 標(biāo)簽。
  • outerHTML:除了包含innerHTML的全部?jī)?nèi)容外, 還包含對(duì)象標(biāo)簽本身。
  • innerText:獲取某個(gè)網(wǎng)頁(yè)元素的文本內(nèi)容(忽略標(biāo)簽,不常用)

DOM元素類(lèi)型(元素和文本)

  • 節(jié)點(diǎn)可以分為元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)和文本節(jié)點(diǎn)...,而這些節(jié)點(diǎn)又有三個(gè)非常有用的屬性 ,分別為:nodeName(節(jié)點(diǎn)的名稱(chēng))、nodeType(節(jié)點(diǎn)類(lèi)型) 和 nodeValue(文本)
  • nodeType:元素(1) 屬性(2) 文本(3)
//children:子元素,獲取元素對(duì)象的子元素。類(lèi)數(shù)組(下標(biāo)和length)
oUl.children.length)//[object HTMLCollection] 4
oUl.children[0];//獲取ul里面第一個(gè)元素。

獲取元素內(nèi)容用innerHTML,表單使用value

childNodes/過(guò)濾空白節(jié)點(diǎn)

  • childNodes 獲取當(dāng)前元素節(jié)點(diǎn)的所有子節(jié)點(diǎn),這里面包含空白節(jié)點(diǎn),在IE9之前,IE瀏覽器會(huì)自動(dòng)忽略空白節(jié)點(diǎn)(兼容問(wèn)題).

高級(jí)選取firstChild/lastChild/parentNode/previousSibling/nextSibling

  • firstChild/firstElementChild 獲取當(dāng)前元素節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)
    firstChild包含空白節(jié)點(diǎn)
  • lastChild 獲取當(dāng)前元素節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)
  • ownerDocument 獲取該節(jié)點(diǎn)的文檔根節(jié)點(diǎn)(document)
  • document.documentElement 獲取的html標(biāo)簽元素
  • parentNode 獲取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
  • previousSibling 獲取當(dāng)前節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)
  • nextSibling 獲取當(dāng)前節(jié)點(diǎn)的后一個(gè)兄弟節(jié)點(diǎn)

獲取非行內(nèi)樣式

  • offsetWidth、offsetHeight、offsetLeft、offsetTop、offsetParent(定位父級(jí))沒(méi)有單位
    盒子的偏移值,如果存在定位父級(jí),以父級(jí)為基準(zhǔn),沒(méi)有定位父級(jí)以body元素為基準(zhǔn)
    注意,只能獲取,不能賦值
    oUl.style.width只能獲取行內(nèi)元素css
    求元素的絕對(duì)位置
function getpostion(obj) {
    //存儲(chǔ)最終的值
    var _left = 0;
    var _top = 0;
    while (obj) { //檢測(cè)定位父級(jí)是否存在
        _left += obj.offsetLeft;
        _top += obj.offsetTop;
        obj = obj.offsetParent; //獲取當(dāng)前元素的定位父級(jí)
    }
    return { //結(jié)果返回一個(gè)對(duì)象,兩個(gè)值
        left: _left,
        top: _top
    }
}
  • 獲取選擇器里面的css相關(guān)屬性的值。
    • 標(biāo)準(zhǔn)瀏覽器:getComputedStyle()
    • IE8及其以下瀏覽器:currentStyle()
      兼容操作
function getstyle(obj,attr){
                if(obj.currentStyle){
                    return obj.currentStyle[attr];
                }else{
                    return getComputedStyle(obj)[attr];
                }
            }

文檔碎片(createDocumentFragment)

文檔碎片在理論上可以提高DOM操作的執(zhí)行效率,將要追加的dom操作先放置在文檔碎片中,最后在追加給對(duì)應(yīng)的元素。

應(yīng)用

  1. 進(jìn)度條


    進(jìn)度條
  2. 簡(jiǎn)易年歷

  3. 自動(dòng)登錄勾選提示


    勾選提示

綜合應(yīng)用

1.點(diǎn)擊按鈕換圖片
2.tab切換案例
3.?dāng)U展案例: QQ延遲提示框,兩個(gè)盒子兄弟關(guān)系,中間有空隙。
4.?dāng)U展案例: 密碼強(qiáng)度
5.?dāng)U展案例: 求一個(gè)盒子的絕對(duì)位置。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 函數(shù)封裝,就一句話:相同的,重復(fù),封起來(lái);不同的,要改的,傳進(jìn)去 DOM(文檔對(duì)象模型) 我們的JS分為三個(gè)部分組...
    AnnQi閱讀 271評(píng)論 0 0
  • 一、基本概念 1.1、DOM DOM是JS操作網(wǎng)頁(yè)的接口,全稱(chēng)為“文檔對(duì)象模型”(Document Object ...
    周花花啊閱讀 3,440評(píng)論 0 6
  • 節(jié)點(diǎn) 節(jié)點(diǎn)類(lèi)型 每個(gè)節(jié)點(diǎn)都有一個(gè) nodeType 屬性,用于表示節(jié)點(diǎn)類(lèi)型。nodeType 屬性返回節(jié)點(diǎn)的類(lèi)型。...
    練曉習(xí)閱讀 542評(píng)論 0 4
  • 今天繼續(xù)了UG畫(huà)圖,幾個(gè)透鏡和初步的鏡筒。還需努力練習(xí),不盡如人意。
    王集是個(gè)好小伙閱讀 104評(píng)論 0 0
  • 前幾天和一個(gè)已婚多年的朋友聊天,已近七年之癢的他,言語(yǔ)中無(wú)不充滿(mǎn)了絕望。 曾經(jīng)的相擁而眠變成了現(xiàn)在背對(duì)背的不理不睬...
    土子閱讀 886評(píng)論 0 0

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