JS-操作dom对象
wenking 8/11/2023 js
# 获取dom对象
- 根据css选择器获取dom元素
// 获取匹配的第一个元素
const box = document.querySelector('css选择器');
// 获取匹配的所有元素
const boxs = document.querySelectorAll('css selector');
1
2
3
4
5
2
3
4
5
querySelector得到的是一个伪数组
- 有长度和索引号,可以通过索引获取
- 没有push和pop方法
- 其他获取dom元素方式
document.getElementById('nav')
document.getElementByTagName('nav')
document.getElementByClassName('nav')
1
2
3
4
5
2
3
4
5
# 操作dom对象内容
- 对象.innerText属性
// 修改元素盒子内容
box.innerText = "新文字";
1
2
2
- 对象.innerHTML属性
box.innerHTML = "<strong>新文字</strong>"
1
区别:innerText
显示纯文本,不解析标签,innerHTML
会解析标签
# 操作dom对象属性
const img = document.querySelector('img');
img.src = './images/1.png';
1
2
2
# 操作dom对象样式属性
- 通过style修改属性样式
const img = document.querySelector('img');
// 格式: 对象.style.样式属性 (多组单词采用小驼峰命名法)
img.style.width = '300px';
1
2
3
2
3
- className关键字,给元素添加类名,会覆盖旧值
const box = document.querySelector('box');
box.className = 'active';
// 如果要保存旧值,则需要拷贝然后重新赋值
box.className = '旧值 active';
1
2
3
4
5
2
3
4
5
- classList
const box = document.querySelector('box');
// 添加类名
box.classList.add('类名');
// 删除类名
box.classList.remove('类名');
// 切换类名: 有指定类名就删除, 没有指定类名就加上
box.classList.toggle('类名');
1
2
3
4
5
6
7
2
3
4
5
6
7
# 操作表单属性
- 获取表单元素值:value属性
const input = document.querySelector('input');
input.value = 'qwe';
1
2
2
- 修改表单类型:type属性
const input = document.querySelector('input');
input.type = 'password';
1
2
2
- 表单显示相关属性,一律使用 bolean
// disabled, checked, selected
const input = document.querySelector('input');
input.checked = false;
1
2
3
2
3
# 自定义属性
标准属性:标签天生自带的属性,class、id、title等
自定义属性:
- 在标签上一律以
data-
开头 - 在dom对象上一律以
dataset
对象方式获取
<ul>
<li data-id="1"></li>
<li data-id="2"></li>
<li data-id="3"></li>
</ul>
<script>
const lis = document.querySelectorAll('li');
for(let i=0; i< lis.length; i++) {
console.log(lis[i].dataset.id)
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 定时器-间歇函数
- 开启定时器
// 开启定时器, 开启格式: setInterval(函数,间隔时间)
let n = setInterval(() => {
console.log("hello");
}, 1000);
// 关闭定时器
clearInterval(n);
1
2
3
4
5
6
7
2
3
4
5
6
7
定时器使用实例:阅读用户协议
let i = 5;
let n = setInterval(function () {
i--;
btn.innerHTML = `我以及阅读用户协议(${i})`;
if (i == 0) {
btn.disabled = false;
clearInterval(n);
}
}, 1000)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9