Document Object Model
文档对象模型
查
查看元素节点
document
代表整个文档
document.getElementsByTagName()
标签名
document.getElementsByName()
需注意,只有部分标签name可生效(表单,表单元素,img
,iframe
)
document.getElementsByClassName()
类名,IE8和IE8以下的版本无效,可以多个class一起
document.getElementById()
元素id在IE8以下的浏览器,不区分id大小写,而且也返回匹配name属性的元素。
document.querySelector()
CSS选择器 在IE7及IE7以下无效。
document.querySelectorAll()
CSS选择器 在IE7及IE7以下无效。
遍历节点树
parentNode
父节点(最顶端的parentNode
为#document
)
childNode
子节点们
firstChild
第一个子节点
lastChild
最后一个子节点
nextSibling
后一个兄弟节点
previousSibling
前一个兄弟节点
基于元素节点树的遍历
parentElement
返回当前元素的父元素节点(IE不兼容)
children
只返回当前元素的元素子节点
node.childElementCount === node.children.length
当前元素节点的子元素个数 (IE不兼容)
firstElementChild
返回的是第一个元素节点(IE不兼容)
lastElementChild
返回的是最后一个元素节点(IE不兼容)
nextElementSibling / previousElementSibling
返回后一个 / 前一个兄弟元素节点(IE不兼容)
节点的四个属性
nodeName
元素的标签名,以大写形式表示,只读
nodeValue
Text节点或Comment节点的文本内容,可读写
nodeType
该节点的类型,只读
attributes
Element节点的属性集合
节点的一个方法
Node.hasChildNodes()
节点的类型
- 元素节点 *
- 文本节点
- 属性节点 *
- 注释节点
- 文档节点
DOM Tree
增
document.createElement()
创建元素节点
document.createTextNode()
创建文字节点
document.createComment()
创建注释节点
document.createDocumentFragment()
插
ParentNode.appendChild()
在最后面插入,和数组的push
很像
ParentNode.insertBefore(a, b)
在a的前面插入b
删
parent.removeChild()
child.remove()
替换
parent.replaceChild(new, origin)
用new替换origin
Element属性
innerHTML
改变元素内的内容。
innerText
改变元素内的文本
Element方法
ele.setAttribute("属性名", "属性值")
设置一个属性
ele.getAttribute("属性名")
获取窗口属性
查看滚动条的滚动距离
window.pageXOffset
/pageYOffset
IE8及以下浏览器不兼容
document.body.scrollLeft
/scrollTop
document.documentElement.scrollLeft
/scrollTop
兼容性混乱,在IE8及以下版本用时取两个值相加。并且,两个值不会同时有值,一个有值,另一个值为零。
document.body.scrollLeft + document.documentElement.scrollLeft
可视区窗口的尺寸
window.innerWidth
/innerHeight
IE8及以下浏览器不兼容
document.documentElement.clientWidth
/clientHeight
标准模式下,任何浏览器都兼容
document.body.clientWidth
/clientHeight
适用于怪异/混杂模式下的浏览器
查看元素的尺寸
ele.offsetWidth
/offsetHeight
查看元素的位置
-
ele.offsetLeft
/offsetTop
对于无定位的父级元素,返回相对于文档的坐标。
对于有定位的父级元素,返回相对于有定位的父元素的坐标。 -
ele.offsetParent
返回最近有定位的父级元素,如无返回body
body
的offsetParent
返回null
让滚动条滚动
window
上有三个方法
-
scroll(x, y)
/scrollTo(x, y)
两种用法相同,用谁都行。 scrollBy(x, y)
x
: 为横轴
y
: 为纵轴
三个方法功能类似,用法都是将x, y坐标传入。即实现让滚动条滚动到当前位置。
区别:scrollBy()
会在之前的数据基础之上做累加
脚本化CSS
读写元素CSS属性
dom.style.prop
- 可读写行间样式,没有兼容性问题,碰到
float
这样的保留字属性,前面应该加css
eg:float
=>cssFloat
- 复合属性必须拆解,组合单词变成小驼峰式写法
- 写入的值必须是字符串格式
dom.style.color = "red"
dom.style.fontSize = "12px"
查询计算样式
-
window.getComputedStyle(ele, null)
或后面跟.[prop]
null
这个参数是调取元素伪类用的。
参数null是干嘛用的
第一条是获取div
宽度,第二条是获取div
伪类的宽度 - 计算样式只读,不可修改
- 返回的计算样式的值都是绝对值,没有相对单位
- IE8及以下不兼容
查询样式
ele.currentStyle
- 计算样式只读,不可修改
- 返回的计算样式的值不是经过转换的绝对值
- IE独有的属性
网友评论