DOM 属性节点
Element.className
className 属性用来读写当前元素节点的 class 属性。它的值是一个字符串,每个 class 之间用空格分割。
1 | // HTML 代码 <div class="one two three" id="myDiv"></div> |
Element.style
每个元素节点都有 style 用来读写该元素的行内样式信息
不过,连词号需要变成骆驼拼写法。
1 | var divStyle = document.querySelector("div").style; |
Element.style
返回的只是行内样式,并不是该元素的全部样式。通过样式表设置的样式,或者从父元素继承的样式,无法通过这个属性得到。元素的全部样式要通过window.getComputedStyle()
得到。
获取属性和设置属性(自定义属性)
Element.getAttribute
方法接受一个字符串作为参数,返回同名属性的值。如果没有该属性,则返回 null。
1 | var mydiv = document.getElementById("mydiv"); |
Element.setAttribute
方法用于为当前节点设置属性。如果属性已经存在,将更新属性值,否则将添加该属性。该方法没有返回值。
1 | // HTML 代码为 |
Element.removeAttribute
方法移除指定属性。该方法没有返回值。
1 | document.getElementById("div1").removeAttribute("id"); |
outerHTML
包括整个标签,而不仅限于标签内部的内容innerText
只获取元素内的文本内容,html 标签将被忽略
获取孩子节点 childNodes 和 children
Element.children
属性返回一个类似数组的对象(HTMLCollection 实例),包括当前元素节点的所有子元素。如果当前元素没有子元素,则返回的对象包含零个成员
这个属性与Node.childNodes
属性的区别是,它只包括元素类型的子节点,不包括其他类型的子节点。而 childNodes 属性包含空白节点
高级选取
Element.firstElementChild
属性返回当前元素的第一个元素子节点,Element.lastElementChild
返回最后一个元素子节点。如果没有元素子节点,这两个属性返回 null。
nextElementSibling
下一个节点
previousElementSibling
上一个节点
Element.nextElementSibling
属性返回当前元素节点的后一个同级元素节点,如果没有则返回 null。
Element.previousElementSibling
属性返回当前元素节点的前一个同级元素节点,如果没有则返回 null。
(分别对应的还有 firstChild,lastChild,nextSibling ,previousSibling 方法 不过这些个方法都能获取到文本节点)
Element.parentNode
可以获取父节点
获取全部样式
元素的全部样式要通过window.getComputedStyle()
得到。
行内样式(inline style)具有最高的优先级,改变行内样式,通常会立即反映出来。但是,网页元素最终的样式是综合各种规则计算出来的。因此,如果想得到元素实际的样式,只读取行内样式是不够的,需要得到浏览器最终计算出来的样式规则。
window.getComputedStyle
方法,就用来返回浏览器计算后得到的最终规则。它接受一个节点对象作为参数,返回一个 CSSStyle 实例,包含了指定节点的最终样式信息。所谓“最终样式信息”,指的是各种 CSS 规则叠加后的结果。
1 | var div = document.querySelector('div'); |
上面代码中,得到的背景色就是 div 元素真正的背景色
兼容性问题
低版本 ie 使用box.currentStyle
获取全部样式
box.insertBefore(newNode, existNode)
插入节点
在 box 的子节点 existNode 前面插入一个新节点
document.createTextNode()
创建文本节点
1 | var t = document.createTextNode("你好"); |
在 box 尾部添加一个文本节点
offsetWidth/offsetHeight
Element.offsetHeight
属性返回一个整数,表示元素的 CSS 垂直高度(单位像素),包括元素本身的高度、padding 和 border
Element.offsetWidth
属性表示元素的 CSS 水平宽度(单位像素),其他都与Element.offsetHeight
一致。
这两个属性都是只读属性
如果元素的 CSS 设为不可见(比如 display: none;),则返回 0
Element.offsetParent
属性返回最靠近当前元素的、并且 CSS 的 position 属性不等于 static 的上层元素。
1 | <div style="position: absolute;"> |
上面代码中,span 元素的 offsetParent 属性就是 div 元素。
该属性主要用于确定子元素位置偏移的计算基准,Element.offsetTop
和Element.offsetLeft
就是offsetParent
元素计算的。
offsetLeft/offsetTop
Element.offsetLeft
返回当前元素左上角相对于Element.offsetParent
节点的水平位移,Element.offsetTop
返回垂直位移,单位为像素。通常,这两个值是指相对于父节点的位移
本文作者:人模人样的搬砖老段
本文链接:DOM 补充
如有错误,请及时评论或者知乎私信或者 B 站私信哦~
最后更新于:2020/02/02