获取元素样式
<head>
<style>
.box {
width: 300px;
height: 300px;
background-color: pink;
}
</style>
</head>
<body>
<div class="box"> 我是一个具有样式的div </div>
<script>
var oBox = document.getElementsByClassName('box')[0]
console.log(oBox.style.width)
console.log(oBox.style.height)
console.log(oBox.style['background-color'])
console.log(oBox.style.backgroundColor)
oBox.style.backgroundColor = 'blue'
console.log(window.getComputedStyle(oBox).width)
console.log(window.getComputedStyle(oBox).backgroundColor)
window.getComputedStyle(oBox).width = 800 + 'px'
</script>
</body>
获取元素类名
<body>
<div class="item box">我是一个具有两个类名的 DIV</div>
<script>
var oDiv = document.querySelector('div')
console.log(oDiv.classList)
oDiv.classList.add('new_box')
oDiv.classList.remove('box')
</script>
</body>
DOM 节点
- 元素节点
- 属性节点
- 文本节点
- 元素内的文本就文本节点 另外空格 换行也是文本节点
获取节点
childNodes: 获取某一节点下 所有的子一级 节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.childNodes)
</script>
</body>
children: 获取某一节点下所有的子一级 元素节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.children)
</script>
</body>
firstChild: 获取某一节点下子一级的 第一个节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.firstChild)
</script>
</body>
lastChild: 获取某一节点下子一级的 最后一个节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.lastChild)
</script>
</body>
firstElementChild: 获取某一节点下子一级的 第一个元素节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.firstElementChild)
</script>
</body>
lastElementChild: 获取某一节点下子一级的 最后一个元素节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.lastElementChild)
</script>
</body>
nextSibling: 获取某一个节点的 下一个兄弟节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.nextSibling)
</script>
</body>
previousSibling: 获取某一个节点的 上一个兄弟节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.previousSibling)
</script>
</body>
nextElementSibling 获取某一个节点的 下一个元素节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.nextElementSibling)
</script>
</body>
previousElementSibling 获取某一个节点的 上一个元素节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.previousElementSibling)
</script>
</body>
parentNode: 获取某一个节点的 父节点
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.parentNode)
</script>
</body>
- attributes: 获取某一个 元素节点 的所有 属性节点
- 获取到一个属性的集合
<body>
<div>
<p>dffff
<span class="d" id="2" data-ss="555">ddd</span>
</p>
<span>fff</span>
</div>
<script>
var D = document.querySelector('div')
console.log(D.attributes)
</script>
</body>
节点属性
nodeType 获取节点类型, 用数字表示
- 元素节点为 1
- 文本节点为 3
- 属性节点为 2 ====》必须属性伪数组中的值
nodeName 获取节点的节点名称
- 元素节点获取到的是 大写的元素名称
- 文本节点获取到的是 #text
- 属性节点获取到的是属性名
nodeValue 获取节点的值
- 元素节点没有对应的value 所以地空值
- 文本获取到的就是文本内容
- 属性节点获取到的是属性值
操纵 DOM 节点
创建节点
向页面中加入一个节点
- 添加节点 首先需要拥有一个节点
- 元素.appendChild() 接收一个参数 将节点添加到最后一个位置
- 元素.insetBefore()接收两个参数第一个参数为要添加的节点 第二个参数为添加到某某元素的前面 第二个参数必写 为null时将元素添加到最后一个位置
<body>
<ul>
<li></li>
<li></li>
<li>2222</li>
</ul>
<script>
var oUl = document.querySelector('ul')
console.log(oUl)
var ll = document.createElement('div')
console.log(ll)
var tt = document.createTextNode('55555')
console.log(tt)
var oli = document.querySelector('li')
oli.appendChild(tt)
console.log(oli)
var ooli = oli.cloneNode(true)
oUl.appendChild(ooli)
var ss = oli.offsetLeft
console.log(ss)
</script>
</body>
删除页面中的某一个节点
var myli = document.querySelectorAll('li')
oUl.removeChild(myli[3])
修改页面中的某一个节点
- 修改某一个节点 父节点.replaceChild(新的节点, 要被修改的节点)
oUl.replaceChild(myLi, oLi)
克隆页面中的某一个节点
- 克隆节点 元素.cloneNodes(布尔值 默认是false)
var oUl = document.querySelector('ul')
var oLi = document.querySelector('li')
var newLi = oLi.cloneNode(true)
console.log(newLi)
oUl.appendChild(newLi)
获取元素的非行内样式
getComputedStyle (非IE使用)
window.getComputedStyle
currentStyle (IE使用)
获取元素偏移量
offsetParent
<head>
<style>
* {
padding: 0;
margin: 0;
}
.box1 {
width: 400px;
height: 400px;
background-color: pink;
position: relative;
}
.box2 {
width: 100px;
height: 100px;
background-color: skyblue;
position: absolute;
left: 100px;
top: 200px;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2"></div>
</div>
<script>
var box2 = document.querySelector('.box2')
console.log(box2.offsetParent)
console.log('box2.offsetLeft', box2.offsetLeft)
console.log('box2.offsetTop', box2.offsetTop)
</script>
</body>
获取元素尺寸
<head>
<style>
* {
padding: 0;
margin: 0;
}
div {
width: 4000px;
height: 5000px;
background-color: pink;
}
</style>
</head>
<body>
<div></div>
<script>
var oDiv = document.querySelector('div')
1. offsetXXX ---> 实际宽度 + padding + border
console.log('oDiv.offsetWidth', oDiv.offsetWidth)
console.log('oDiv.offsetHeight', oDiv.offsetHeight)
console.log('======================')
2. clientXXX ---> 实际宽度 + padding
console.log('oDiv.clientWidth', oDiv.clientWidth)
console.log('oDiv.clientHeight', oDiv.clientHeight)
</script>
</body>
- 注意 offsetWidth offsetHeight 会计算内边距和边框
- clientWidth clientHeight 不会计算边框
获取浏览器窗口尺寸
console.log('window.innerWidth', window.innerWidth)
console.log('window.innerHeight', window.innerHeight)
console.log('document.documentElement.clientWidth', document.documentElement.clientWidth)
console.log('document.documentElement.clientWidth', document.documentElement.clientHeight)