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