DOM(Document Object Model)
document:是html的爸爸,可是html是根元素,結合實際經驗理解8(我目前不理解)
把文檔變成對象的模型叫作 DOMhtml
- Node、Document和Element的API
- 如何將一個很爛很爛的API寫的好用一些(未完成)
- 本文只是一個筆記,關於接口的屬性和方法的更多信息請參考MDN,文中只提到一小部分。
- 本節未完。
DOM是一棵樹,樹上有Node
Node 分爲 Document(html)、Element(元素)和 Text(文本),以及其餘不重要的。 node
Node 的接口
1. 屬性:背單詞,而後互相結合
childNodes,firstChild,innerText,lastChild,6nextSibling,nodeName,nodeType,nodeValue,outerText,ownerDocument,parentElement,parentNode,previousSibling,textContent面試
- child / children / parent(s)
- node
- first / last
- next / previous(先前的)
- sibling(兄弟、姐妹) / siblings(兄弟們、姐妹們)
- type
- value / text / content(內容,目錄)
- inner(裏面、內部) / outer(外面、外部)
- element(元素,標籤)
2. 方法(若是一個屬性是函數,那麼這個屬性就也叫作方法;換言之,方法是函數屬性)
3. 總結
①搞清楚英文單詞的意思就知道用法。
②若是發現知道英文後依然不明白用法,看 MDN 的例子便可。
DOM APi 無外乎「增刪改查」!(查通常用DOM查)
特別須要記憶的屬性和方法:
①nodeName:除svg小寫外,其他標籤均爲大寫,如'HTML','DIV'等。
②nodeType:=1 是element;=3 是text 等,其他看MDN(面試題)數組
此處還有面試必考題:DocumentFragment 優化瀏覽器
③ innerText 和 textContent 區別(面試題)
textContent會獲取包括<script> <style>
在內的元素內容,而innerText不會。
更多區別看MDN。
④nextSbiling:可能會得到文本
⑤cloneNode():接受一個布爾值,若是是true就是深拷貝,若是是false就是淺拷貝。
⑤isEqualNode()和isSameNode()的區別:Equal是看起來相等,Same是徹底相等,就是同一個!
⑥normalize():將不正常的東西變成正常的,具體看文檔。
⑦插入文本的方法:安全
- div1.appendChild(document.creatTextNode('Hello world'))
- div1.innerText('Hello world')
以有兩種方法,在之後的工做中就能知道用哪一種了,不踩坑是記不住的。服務器
Document 的接口
1. 屬性
- body
- characterSet:只讀屬性返回當前文檔的字符編碼
- childElementCount:只讀屬性返回一個無符號長整型數字
- children
- doctype
- documentElement:只讀屬性返回Document的根元素(如html)
- domain:獲取域名
- fullscreen:全屏API
- head
- hidden://總會有一些沒啥用的API
- images
- links:獲取全部的a標籤
- location
- onxxxxxxxxx:事件監聽
- origin
- plugins:獲取用的裝的插件
- readyState:下載好了嗎?
- referrer:引薦人,好比打開網站A的圖片,服務器就要問瀏覽器referrer是誰,若是是這個網站就是容許訪問,若是不是就拒絕訪問。固然也能夠接受訪問,這個API的功能就是能夠判斷referrer是誰來接受或者拒絕訪問。(這只是一個很垃圾的例子,具體看文檔或者別人講的吧)
- scripts
- scrollingElement:獲取正在滾動的元素
- styleSheets:獲取全部的CSS
- title
- visibilityState:獲取頁面是否被顯示
2. 方法
- close():關閉當前窗口或某個指定的窗口;與window.open搭配使用
- createDocumentFragment():建立一個新的空白的文檔片斷
- createElement()
- createTextNode()
- execCommand():運行代碼;用於寫富文本編輯器
- exitFullscreen():退出全屏
- getElementById(): 幾乎不用,用querySelector(All)代替
- getElementsByClassName():幾乎不用,用querySelector(All)代替
- getElementsByName(): 幾乎不用,用querySelector(All)代替
- getElementsByTagName(): 幾乎不用,用querySelector(All)代替
- getSelection():獲取用戶選中的文本
- hasFocus():用戶是否focus在當前頁面上
- open()
- querySelector():返回一個元素
- querySelectorAll():返回一個或多個元素組成的僞數組(DOM的API得到elements都是僞數組)
- registerElement()://用的少
- write()
- writeln()
Element 的接口
1. 屬性
- attributes:獲取一個元素的全部屬性
- childElementCount
- children
- classList
- className
- clientHeight clientLeft
- clientTop
- clientWidth
- currentStyle
- firstElementChild
- id
- innerHTML:有安全問題,它會把用戶輸入的標籤當作開發者寫的標籤渲染,會引發一些問題。
- lastElementChild
- localName
- name
- namespaceURI
- nextElementSibling
- onfullscreenchange
- outerHTML
- prefix
- previousElementSibling
- runtimeStyle
- scrollHeight
- scrollLeft
- scrollLeftMax
- scrollTop
- scrollTopMax
- scrollWidth
- shadowRoot
- slot
2. 方法
- querySelector():
- querySelectorAll():
不僅是document有這兩個方法,element也有。app