1.dom對象的innerText和innerHTML的區(qū)別
- innerText 會輸出相對應(yīng)的文本內(nèi)容
- innerHTML屬性返回該元素包含的HTML代碼单起。該屬性可讀寫采记,常用來設(shè)置某個節(jié)點的內(nèi)容。
<body>
<p class="p1">
我是p1我是p1我是p1
</P>
<p class="p2">
我是p2我是p2我是p2
</P>
</body>
2.Element.children和Element.childNodes的區(qū)別
- childNodes屬性返回一個NodeList集合拉一,成員包括當(dāng)前節(jié)點的所有子節(jié)點采盒。
- Element.children屬性返回一個HTMLCollection對象旧乞,包括當(dāng)前元素節(jié)點的所有子元素。它是一個類似數(shù)組的動態(tài)對象
兩者區(qū)別:除了HTML元素節(jié)點纽甘,該屬性返回的還包括Text節(jié)點和Comment節(jié)點
3.查詢元素有幾種常見的方法良蛮?
-
document/element.querySelector( )
接受一個CSS選擇器作為參數(shù)抽碌,返回匹配該選擇器的元素節(jié)點悍赢。如果有多個節(jié)點滿足匹配條件,則返回第一個匹配的節(jié)點货徙。如果沒有發(fā)現(xiàn)匹配的節(jié)點左权,則返回null。
-
document/element.querySelectorAll( )
與querySelector用法類似痴颊,區(qū)別是返回一個NodeList對象赏迟,包含所有匹配給定選擇器的節(jié)點。
-
document/Element.getElementsByClassName( )
方法返回一個類似數(shù)組的對象(HTMLCollection實例對象)蠢棱,包括了所有class名字符合指定條件的元素锌杀,元素的變化實時反映在返回結(jié)果中。
-
document.getElementsById( )
返回匹配指定id屬性的元素節(jié)點泻仙。如果沒有發(fā)現(xiàn)匹配的節(jié)點糕再,則返回null。
這個方法只能在document對象上使用玉转,不能在其他元素節(jié)點上使用突想。
- document/element.getElementByTagName( )
返回所有指定HTML標(biāo)簽的元素,返回值是一個類似數(shù)組的HTMLCollection
對象究抓,可以實時反映HTML文檔的變化猾担。如果沒有任何匹配的元素,就返回一個空集刺下。
4.如何創(chuàng)建一個元素绑嘹?如何給元素設(shè)置屬性?
- 通過creatElement( ) 可以創(chuàng)建元素
- 另外通過setAttribute(xx.qq)可以為元素設(shè)置屬性
-
同時也可以使用賦值的方法橘茉,例如div.id=div1;
5.元素的添加工腋、刪除?
- 創(chuàng)建元素后捺癞,需要將文本添加到DOM樹中可通過如下方法實現(xiàn)
- document.body.appendChild( );
- document.body.insertBefore( );
- document.body.replaceChild( );
-刪除已有元素
- document.body.removeChild( );
- Element.removeAttribute( )刪除元素屬性
6.DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別夷蚊?
- DOM0
document.el.onclick="function( ){}"
在事件流冒泡階段觸發(fā)。
- DOM2(
getEventListener( )髓介、removeEventListener( )
)
document.el.getEventListener(type/"click" , function( ){ } , true/false)
刪除可用 removeEventListener( type , function( ){ } )
運行流程先對事件進(jìn)行捕獲惕鼓,然后在進(jìn)行冒泡,第三個屬性false/true唐础。fasle為默認(rèn)屬性箱歧,代指事件在冒泡過程中觸發(fā)矾飞。true則代指在捕獲過程中觸發(fā)。
- IE (
attachEvent( ),detachEvent( )
)
document.el.attchEvent("onclick", function( ){ })
在事件流冒泡階段觸發(fā)呀邢。
7.attachEvent與addEventListener的區(qū)別洒沦?
- addEventListener是W3C標(biāo)準(zhǔn),而attachEvent()不是W3C標(biāo)準(zhǔn)价淌,并只支持IE8瀏覽器以下的
- addEventListener里面有三個參數(shù)(類型申眼、函數(shù)、布爾值)而attachEvent只有兩個(類型蝉衣、函數(shù))括尸,只支持事件冒泡。
- addEventListener接收的類型為click而attachEvent接收的是onclick病毡。
- addEventListener的移除函數(shù)方法是removeEventListener濒翻,而attachEvent移除函數(shù)的方法是detachEvent。
- addEventListener的作用域是元素本身啦膜,this指的是觸發(fā)元素有送,attachEvent的作用域是全局this指的是window。
- addEventListener按照添加順序執(zhí)行僧家,attachEvent沒有順序執(zhí)行雀摘。
8.解釋IE事件冒泡和DOM2事件傳播機(jī)制?
- IE
事件開始時由具體的元素啸臀,文檔中嵌套層次最深的節(jié)點接收届宠,然后逐個向上傳播 - DOM2
運行流程先對事件進(jìn)行捕獲,然后在進(jìn)行冒泡乘粒,第三個屬性false/true豌注。fasle為默認(rèn)屬性,代指事件在冒泡過程中觸發(fā)灯萍。true則代指在捕獲過程中觸發(fā)轧铁。
9.如何阻止事件冒泡? 如何阻止默認(rèn)事件旦棉?
- preventDefault( )
阻止默認(rèn)事件 - stopPropagation( )
取消事件進(jìn)一步捕獲和冒泡
以上都需要對象屬相cancelable 為true時可以使用