DOM:Document/Object/Model
DOM是一棵树,树上有Node,分为Document(html)、Element(元素)、Text(文本)、Comment(注释)及其他
DOM最主要的功能是:通过 构造函数 把 节点 变成 对象,通过调用对象的 API 来操作对象
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node的接口
1.属性
nodeName,nodeType,nodeValue,
childNodes,parentNode,parentElement
firstChild,lastChild,nextSibling,previousSibling
innerText,textContent(注意两者的区别)
outerText,ownerDocument
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
需要注意的一些问题
document.body.childNodes 获取子节点(会获取文本节点)
document.body.children 获取字标签(不会获取文本节点)
如何获取文本
innerText(IE)与textConten(Firefox)的区别
(innerText意识到样式,比如display:none)
(innerText受Css样式影响,会触发重排.......也就是它的速度会比textContent慢)
如何在标签里添加文本(两种方法)
①
div.innerText = ‘nice to meet you‘
这种方法有个弊端就是,会把你的元素清空,比如你div里面有<span>you</span>,添加后,你原有的span及内容都没了
②
div.appendChild(document.createTextNode(‘nice to meet you‘))
生成一个新的节点,这样就不会影响原有内容
2.方法(如果一个属性是函数,那么这个属性也叫作方法,换言之,方法是函数属性)
.appendChild( )
.cloneNode( ) //注意 .cloneNode(true)深拷贝,拷贝的跟原来的完全一样;.cloneNode( )浅拷贝,只克隆属性和标签不克隆其子节点
.contains( )
.hasChildNodes( )
.insertBefore( )
.isEqualNode( ) // 相等但不是同一个,比如 var a = 1; var b = 1 那么 a 和 b 相等但不是同一个
.isSameNode( ) //相同,同一个
.removeChild( ) //只是从页面中移除,但还是在存在于内存里
.replaceChild( ) //比如用div2替换div1,那么div1依然在内存里
.normalize( ) //常规化
Document 接口
参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Document
属性
anchors //已经被弃用
body
characterSet
childElementCount
children
doctype
documentElement
domain
fullscreen
head
hidden
images
links
location
onxxxxx
origin
plugins
readyState
referer //比如你是从哪里跳转到这个页面的,通过设置,可以提高安全性
......