2019-02-01(DOM、表單以及BOM操作)

Dom :Document Object Model (文檔對象模型)
文檔:HTML頁面
文檔對象:頁面中的元素
文檔對象模型:為了讓對象(js)能夠操作頁面中的元素

DOM把文檔看做是一棵樹,同時(shí)定義了很多方法來操作這棵樹里的每一個(gè)元素(節(jié)點(diǎn))DOM節(jié)點(diǎn)

方法:
一、獲取子元素
obj.childNodes
obj.children

    obj.firstElementChild || obj.firstChild
    obj.lastElementChild || obj.lastChild
    
    obj.nextElementSibling || obj.nextSibling
    obj.previousElementSibling || obj.previousSibling

二、獲取父元素
    obj.parentNode
    obj.offsetParent
    
三、各種位置寬高
    obj.offsetTop/obj.offsetLeft
    obj.clientWidth
    obj.offsetWodth

一、獲取子節(jié)點(diǎn):
    1、元素.childNodes()   只讀屬性  獲取子元素列表集合
        標(biāo)準(zhǔn)瀏覽器:包含文本節(jié)點(diǎn),元素節(jié)點(diǎn)
        ie7/8:只包含元素節(jié)點(diǎn)
        
        類型有12種
            1、元素節(jié)點(diǎn)==1
            2、屬性節(jié)點(diǎn)==2
            3、文本節(jié)點(diǎn)==3
            
        判斷類型:元素.nodeType
        
        元素.attributes()  只讀屬性  獲取元素屬性列表集合(數(shù)組)
            /*
                eg: 
                    <ul id='oUl' class='aa'></ul>
                        oUl.attributes.length  //2
                        oUl.attributes[0].nodeType  //2 屬性節(jié)點(diǎn)  
                        oUl.attributes[0].name  //id  
                        oUl.attributes[1].name  //aa  
            */
            
    2、元素.children() 只讀屬性  獲取子元素列表集合 推薦使用    
        標(biāo)準(zhǔn)瀏覽器:只包含元素節(jié)點(diǎn)
        ie7/8:只包含元素節(jié)點(diǎn)
        
    3、獲取第一個(gè)子節(jié)點(diǎn):
        元素.firstChild     只讀屬性
            標(biāo)準(zhǔn)下包含文本節(jié)點(diǎn),元素節(jié)點(diǎn)
            ie7/8:只包含元素節(jié)點(diǎn)
        元素.firstElementFirst
            標(biāo)準(zhǔn)下只包含元素節(jié)點(diǎn)
            ie7/8無這一屬性
            
    4、獲取最后一個(gè)子節(jié)點(diǎn) 只讀屬性
        元素.lastChild;   
            標(biāo)準(zhǔn)下包含文本節(jié)點(diǎn),元素節(jié)點(diǎn)
            ie7/8:只包含元素節(jié)點(diǎn)
        元素.lastElementChild;
            標(biāo)準(zhǔn)下只包含元素節(jié)點(diǎn)
            ie7/8無這一屬性

二、獲取兄弟節(jié)點(diǎn)
    1、獲取下一個(gè)兄弟節(jié)點(diǎn)
        元素.nextSibling; 只讀屬性
            標(biāo)準(zhǔn)下包含文本節(jié)點(diǎn),元素節(jié)點(diǎn)
            ie7/8只包含元素節(jié)點(diǎn)
        元素.nextElementSibling
            標(biāo)準(zhǔn)下只包含元素節(jié)點(diǎn)
            ie7/8無這一屬性
            
    2、獲取上一個(gè)兄弟節(jié)點(diǎn) 只讀屬性
        元素.previousSibling
            標(biāo)準(zhǔn)瀏覽器包含文本節(jié)點(diǎn),元素節(jié)點(diǎn)
            ie7/8只包含元素節(jié)點(diǎn)
        元素.previousElementSibling
            標(biāo)準(zhǔn)下只包含元素節(jié)點(diǎn)
            ie7/8無這一屬性
        
            
三、獲取當(dāng)前元素父級節(jié)點(diǎn)
    1、元素.parentNode 只讀屬性
        標(biāo)準(zhǔn)和ie7/8無差別,沒有兼容性問題
        
    2、元素.offsetParent  只讀屬性 獲取離當(dāng)前元素最近的有定位的父級元素
        如果沒有定位,默認(rèn)是body 
        ie7如果當(dāng)前元素沒有定位,默認(rèn)是body 。如果當(dāng)前元素有定位,默認(rèn)是HTML
        
        元素.offsetLeft 元素.offsetTop   當(dāng)前元素到定位父級偏移的位置(offsetParent)

四、獲取元素的各種尺寸寬高
    1、元素.offsetTop / 元素.offsetLeft  獲取元素到定位父級的距離(上邊距,左邊距)
        如果當(dāng)前元素沒有定位
            offsetLeft/offsetTop  ---> html
            offsetParent ---> body
    2、元素.clientWidth:width+padding(可視區(qū)域的寬,如果內(nèi)容過多,自身有滾動(dòng)條或者overflow:hide都不算在內(nèi))
       元素.offsetWidth :width+padding+border(可視區(qū)域的寬+border)
    
五、操作元素行間屬性的多種方式
    1、元素.getAttribute('屬性名') 獲取指定元素的屬性
    2、元素.setAttribute('屬性名','屬性值') 給指定元素的指定屬性設(shè)置值  // oText.setAttribute( 'value', 'hello' );
    3、元素.removeAttribute('屬性名') 刪除指定元素的指定屬性

六、動(dòng)態(tài)創(chuàng)建元素
    1、var obj = document.createElement('標(biāo)簽名')
        將創(chuàng)建的標(biāo)簽添加到頁面中(你要添加在哪個(gè)父級下)
        ①、父級.appendChild(obj)
        ②、被插入的元素父級.insertBefore(obj,被插入的元素)
            ie(所有版本)下如果被插入的元素不存在,會報(bào)錯(cuò)
            標(biāo)準(zhǔn)下(火狐,谷歌)如果被插入的元素不存在,則會以appendChild形式添加元素
            
    2、要?jiǎng)h除的子節(jié)點(diǎn)父元素.removeChild(要?jiǎng)h除的子節(jié)點(diǎn))  刪除子節(jié)點(diǎn)    
    
    3、被替換的節(jié)點(diǎn)父級.replaceChild(新的節(jié)點(diǎn),被替換的節(jié)點(diǎn))  替換子節(jié)點(diǎn)

表單操作:
一、獲取表單: formId.name
<input type='radio' name='sex' value='男'/>男
<input type='radio' name='sex' value='女'/>女
radio、CheckBox :name相同為一組 checked 選中狀態(tài)
formId.sex 是一個(gè)數(shù)組 formId.sex[0] 獲取到第一個(gè)男
<select name='city'>
<option value='北京'>北京</option>
<option value='上海' selected>上海</option>
<option value='廣州'>廣州</option>
</select>
select selected選中 默認(rèn)上海
二、change事件:
type = 'text' 當(dāng)光標(biāo)離開input的時(shí)候執(zhí)行onchange事件
type='radio'/'checkbox' 標(biāo)準(zhǔn)瀏覽器值改變之后就執(zhí)行,ie7/8 光標(biāo)離開之后才執(zhí)行

三、表單事件
    <form id='oForm' action='http://www.baidu.com'></form>
    oForm.onsubmit = function(){
        if(this.text1.value==" "){
            alert("請輸入內(nèi)容");
            return false;
        }
    }
    onsubmit:表單提交事件
    onreset:表單重置事件  
    return false 阻止事件的發(fā)生 

BOM操作:Browser Object Model 瀏覽器對象模型
方法:window.open(地址默認(rèn)是空白頁面,窗口打開方式默認(rèn)新窗口) 打開一個(gè)新窗口 window可以省略

屬性:1、window.navigator.userAgent  瀏覽器信息
        檢查是否為ie瀏覽器
        if ( window.navigator.userAgent.indexOf('MSIE') != -1 ) {
            alert('我是ie');
        } else {
            alert('我不是ie');
        }
     2、window.location  地址欄的信息
        window.location.href    地址欄的信息
        window.location.hash    #后面的信息
        window.location.search  ?后面的信息

窗口尺寸大?。?    瀏覽器窗口可視區(qū)的大?。篸ocument.documentElement.clientWidth / document.documentElement.clientHeight
    滾動(dòng)條滾動(dòng)距離:document.documentElement.scrollTop/.scrollLeft 
    div內(nèi)容里的高度(滾動(dòng)高):document.body.scrollHeight (全部的高度,包括里面子元素的高度)  子元素高+padding  除開border外盒子里的高度 
    文檔高度:document.body.offsetHeight  

    window對象常用事件:
        window.onscroll:滾動(dòng)條滾動(dòng)時(shí)觸發(fā)
        window.onresize:瀏覽器窗口大小改變時(shí)觸發(fā)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • ??DOM 1 級主要定義的是 HTML 和 XML 文檔的底層結(jié)構(gòu)。 ??DOM2 和 DOM3 級則在這個(gè)結(jié)構(gòu)...
    霜天曉閱讀 1,599評論 1 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,813評論 1 45
  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,690評論 1 11
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,149評論 1 92
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,513評論 0 21

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