highlight: an-old-hope
一、获取标签对象class类名
对class类名进行增、删、查:
- 增加:标签对象.classList.add();
- 删除:标签对象.classList.remove();
- 查看:标签对象.classList();
注意:对class类名没有修改操作。
let oDiv = document.querySelector('div');
console.log(oDiv);
// 查看class类名
console.log(oDiv.classList);
// 新增class类名
oDiv.classList.add('pupu');
// 删除class类名
oDiv.classList.remove('box');
oDiv.classList.remove('box1');
二、获取标签对象CSS样式
语法形式:标签对象.style;
- 获取行内式的CSS属性: 标签对象.style.CSS属性;
- 获取非行内CSS样式:window.getComputeStyle(标签对象).CSS属性;
- 注意:打印颜色的时候,控制台打印的颜色是rgba()的形式,这种方式获取的是只读的属性。
let oDiv = document.querySelector('div');
console.log(oDiv);
// 行内样式
console.log(oDiv.style.width);
console.log(oDiv.style.height);
// 写法错误
// console.log(oDiv.style.background-color);
// 可通过小驼峰命名法
console.log(oDiv.style.backgroundColor);
// []语法
console.log(oDiv.style['backgroundColor']);
// 获取非行内样式属性
// 外部样式和内部样式获取元素属性
console.log(window.getComputedStyle(oDiv).backgroundColor);
console.log(window.getComputedStyle(oDiv).width);
三、获取DOM节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>羽生</p>
<span>结弦</span>
<b>加粗</b>
</div>
<script>
/*
oDiv.childNodes:NodeList(7) [text, p, text, span, text, b, text]
获取所有的子级节点(会把换行识别为一个文本,标签当成元素节点)
div结束标签的位置开始,到p标签开始位置的换行会被识别为一个text
p标签会被识别为一个元素节点
p结束标签到span开始标签的换行会被识别为一个text
span标签会被识别为一个元素节点
span标签到结束到div标签开始的换行也会被识别为一个text
*/
var oDiv = document.querySelector('div');
console.log(oDiv);
console.log(oDiv.childNodes);
// 获取元素的所有子级元素节点(只能获取到标签 不能获取内容)
// 运行结果:HTMLCollection(3) [p, span, b]
console.log(oDiv.children);
// 获取标签对象的子节点以及换行text
// 运行结果:NodeList(7) [text, p, text, span, text, b, text]
console.log(oDiv.childNodes);
</script>
</body>
</html>
四、获取DOM的第一个节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>pppppppp</p>
<span>spanspanspanspan</span>
</div>
<script>
const oDiv = document.querySelectorAll('div')[0];
console.log(oDiv);
// 获取标签对象的第一个子节点(不一定是子节点)
/*
获取到div节点内的第一个子节点
注意此时并不是获取到了第一个元素节点
而是div开始标签后到p开始标签钱的一段换行,这一段被识别为text(文本节点)
除非你的HTML 结构不写换行
*/
console.log(oDiv.firstChild);
// 获取的是元素内部第一个元素节点
console.log(oDiv.firstElementChild);
</script>
</body>
</html>
五、获取DOM最后一个子节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>ppppppp</p>
<span>spanspanspanpsan</span>
</div>
<script>
/*
获取元素的最后一个子节点
*/
const oDiv = document.querySelectorAll('div')[0];
console.log(oDiv);
// 打印结果:text
// 打印最后一个节点
console.log(oDiv.lastChild);
// 打印结果:<span>spanspanspanpsan</span>
// 打印最后一个标签节点
console.log(oDiv.lastElementChild);
</script>
</body>
</html>
六、获取兄弟节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
const oUlli = document.getElementsByTagName('li')[0];
console.log(oUlli);
const oUlli2 = document.getElementsByTagName('li')[1];
console.log(oUlli2);
// 获取所有子节点
console.log(oUlli.childNodes);
// 获取的是下一个兄弟节点
// 结果:text
console.log(oUlli.nextSibling);
// 获取的是下一个兄弟元素节点
// 运行结果:<li>2</li>
console.log(oUlli.nextElementSibling);
// 获取的是上一个兄弟节点
// 运行结果:text
console.log(oUlli.previousSibling);
// 获取上一个兄弟元素节点
// 如果没有获取的是null
console.log(oUlli.previousElementSibling);
// 如果有,运行结果:<li>1</li>
console.log(oUlli2.previousElementSibling);
</script>
</body>
</html>
七、获取父级节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
const oUlli1 = document.getElementsByTagName('li')[0];
console.log(oUlli1);
// 获取的是整个父元素以及里面的内容
console.log(oUlli1.parentNode);
// 获取的是整个父元素以及里面的内容
console.log(oUlli1.parentElement);
// 两个没区别
</script>
</body>
</html>
八、节点分类
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul a="100" b="200">
<li>我是节点</li>
</ul>
<script>
// 获取标签
const oUl = document.querySelector('ul');
// 元素节点
const ele = oUl.firstElementChild;
console.log(ele);
// 文本节点
const text = oUl.firstChild;
console.log(text);
// 属性节点
// 结果:NamedNodeMap {0: a, 1: b, a: a, b: b, length: 2}
// const attr = oUl.attributes;
const attr = oUl.attributes[0];
console.log(attr);
/*
节点类型
nodeType
*/
console.log(ele.nodeType); //元素节点打印1
console.log(text.nodeType); //文本节点打印3
// console.log(attr.nodeType); //打印undefined
console.log(attr.nodeType); //属性节点打印2
/*
节点名称
nodeName
*/
console.log(ele.nodeName); //大写的LI
console.log(text.nodeName); //#text
console.log(attr.nodeName); //结果为属性名 如果没有定义哪一个属性名 就打印undefined
/*
节点的值
nodeValue
*/
console.log(ele.nodeValue); //元素标签没有值,打印出的值为null
console.log(text.nodeValue); //文本text的节点值为空格
console.log(attr.nodeValue); //属性名的节点值为对应属性的属性值
</script>
</body>
</html>