10.1 什么是DOM?
DOM是針對(duì)HTML和XML文檔的一個(gè)API;
10.2在確定節(jié)點(diǎn)類(lèi)型時(shí),如何確保兼容性?
講nodeType屬性與數(shù)字值進(jìn)行比較;
10.3為何說(shuō)NodeiList是有生命、有呼吸的對(duì)象?
因?yàn)樗腔贒OM結(jié)構(gòu)動(dòng)態(tài)執(zhí)行查詢的結(jié)果,因此DOM結(jié)構(gòu)的變化能夠自動(dòng)反映在NodeList對(duì)象中。
10.4DOM中操作節(jié)點(diǎn)的方法有?
appendChild();insertBefore();
replaceChild();removeChild();
cloneNode();normalize();
10.5document對(duì)象獲取特定某個(gè)或某組元素引用的方法有?
getElementById()和getElementsByTagName()
getElementsByName()(HTMLDocument類(lèi)型有,XML類(lèi)型沒(méi)有)
10.6如果頁(yè)面中多個(gè)元素的ID相同,getElementById()如何處理?
只返回文檔中第一次出現(xiàn)的元素;
10.7為何最好在比較之前將標(biāo)簽名轉(zhuǎn)換為相同的大小寫(xiě)形式?
因?yàn)镠TML和XML中標(biāo)簽名大小寫(xiě) 規(guī)則不一樣;
10.8操作特性的DOM方法有?
getAttribute();setAttribute();removeAttribute();
10.9attributes屬性的方法有?
getNameItem();removeNameItem();setNameItem();item();
10.10操作節(jié)點(diǎn)中的文本有?
appendData();deleteData();insertData();
replaceData();splitText();substringData();
10.11什么是動(dòng)態(tài)樣式?
在頁(yè)面加載時(shí)不存在的樣式,加載后才動(dòng)態(tài)添加到頁(yè)面中。
10.12為何DOM操作在處理,script和style元素時(shí)存在一些復(fù)雜性?
因?yàn)檫@兩個(gè)元素分別包含腳本和樣式信息,瀏覽器會(huì)將他們和其他元素區(qū)別對(duì)待。
10.13如何理解DOM對(duì)性能的影響?
DOM操作往往是JS程序中開(kāi)銷(xiāo)最大的部分,因此要盡量減少對(duì)DOM的操作。
11.01選擇符API的目的是?
致力于讓瀏覽器原生支持CSS查詢,讓解析和樹(shù)查詢操作可以在瀏覽器內(nèi)部通過(guò)編譯后的代碼來(lái)完成,去改善性能。
11.02querySelectorAll()和querySelector的異同?
接收的參數(shù)都是一個(gè)CSS選擇符,若傳入瀏覽器不支持的選擇符或者選擇符中有語(yǔ)法錯(cuò)誤,都會(huì)拋出錯(cuò)誤;
而前者返回的是所有的元素,后者只返回一個(gè)元素;
11.03返回NodeList的DOM方法杜具有的同樣問(wèn)題是?
性能問(wèn)題
11.04Document的readyState屬性的可能值有?
Loading 正在加載文檔;complete已經(jīng)加載完文檔。
11.05如何避免在使用innerHTMl、outerHTML屬性和insertAdjacentHTML()方法時(shí)可能導(dǎo)致的內(nèi)存占用問(wèn)題?
手工刪除被替換元素的所有事件處理程序和JS對(duì)象屬性。
11.06H5中選擇的滾動(dòng)頁(yè)面的標(biāo)準(zhǔn)方法為?
scrollIntoView()
11.07為何要為DOM元素定義額外的屬性?
因?yàn)闉g覽器處理DOM元素間空白符的方式不一樣
12.01DOM2級(jí)和3級(jí)的目的是?
擴(kuò)展DOM API,以滿足操作XML的所有需求,同時(shí)提供更好的錯(cuò)誤處理和特性檢測(cè)能力。