API笔记
作用
使用js操作html和浏览器
变量声明
const优先,let当为变量时才用这个
数组和对象改值可以用const(只要栈里的地址不变,就可以直接给const的数组和对象里的元素增删改查)
将数组或者对象名指向一个新的数组或对象,则不能用const,因为地址已改变
const names=[];names=[1,2,3]//const obj={}; obj={uname:'123'//地址改变
const names=[]; names[0]=1//const obj={}; obj.uname='123'//地址不变,数据变
DOM
概念
文档对象模型,用来操作网页内容(标签)
DOM树
概念
将html文档以树状结构表现出来,直观体现标签与标签之间的关系
模型
DOM对象
html里面的标签(DOM树里的每一个模块)
DOM用法
根据css选择器获取DOM元素
获取一个选择器:const box=dovument.quertSelector('选择器名称')//默认是第一个
得到的是一个伪数组(不能增删改查)
获取多个选择器:document.quertSelectorAll('选择器名称')//同名的全部
得到的是一个伪数组(不能增删改查,有长度和索引号)
想得到所有对象,则需要for遍历
可以改变css样式(eg:p[0].style.color='red')
在控制台显示出盒子及其属性
选择同名的第一个盒子:eg->ul li:first-child
选择第n个同名的:~nth-child(n)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>获取DOM元素</title>
</head>
<body>
<div class="box">123</div>
<div class="box" id="box">abc</div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
// 选择一个
const box = document.querySelector("div");
const box2 = document.querySelector(".box");
const box3 = document.querySelector("#box");
const list = document.querySelector("ul li");
const list2 = document.querySelector("ul li:first-child");
console.log(box);
console.log(box2);
console.log(box3);
console.log(list);
console.log(list2);
// 选择全部
const listAll = document.querySelectorAll("ul li");
console.log(listAll);
</script>
</body>
</html>
修改元素的文本更换内容
对象.innerText 属性//修改文本内容
对象.innerHTML 属性//修改标签及文本内容
推荐使用innerHTML
修改元素属性
对象.属性=......
操作元素样式属性
对象.style.样式属性=值
注:
多组单词的属性要采取小驼峰命名法(eg:背景颜色:background-color--->backgroundColor)
当操作整个body时不需要先获取,直接document.body.style.属性值=''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>操作DOM元素</title>
<style>
.fix {
background-color: red;
width: 200px;
height: 200px;
}
div {
height: 200px;
width: 200px;
background-color: pink;
}
.box2 {
background-color: skyblue;
padding-left: 20px;
margin: 0 auto;
width: 300px;
height: 300px;
}
</style>
</head>
<body>
<!-- <div class="box">文字内容</div>
<img src="../image/1.jpg" alt="" style="width: 200px" title="艺术照" />
<div class="fix">fix</div> -->
<div class="class"></div>
<script>
// 修改文字
// 1.获取元素
const box = document.querySelector(".box");
// 2.修改文字内容
// console.log(box.innerText); //获取文字内容
// box.innerText = `<strong>更换文字</strong>`; //修改文字,但是不能修改标签
// 修改标签
// box.innerHTML = "<strong>更换标签</strong>";
// 修改元素属性
const img = document.querySelector("img");
// 修改图片属性
// img.src = "../image/研学徽.png";
// img.width = "100px";
// img.title = "研学徽";
// 修改元素样式属性
const fix = document.querySelector(".fix");
// fix.style.width='300px'
// fix.style.color='pink';
// fix.style.backgroundColor='blue'
// 用类名
const div = document.querySelector("div");
div.className = "box2";
</script>
</body>
</html>
增加类
覆盖旧类
获取元素->获取名.className='目标选择器名'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>增加类名(完全覆盖旧类)</title>
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
}
.box {
width: 300px;
height: 300px;
background-color: blue;
margin-left: 20px;
padding-left: 20px;
}
</style>
</head>
<body>
<div class="class"></div>
<script>
const div = document.querySelector(".class");
//新值完全代替旧值,要是还想保留旧值的某些属性,则可以div.className="class box",此时会遵循优先级
div.className = "box";
</script>
</body>
</html>
追加类
获取元素->获取名.classList.add('目标选择器名')
删除类
获取元素->获取名.classList.remove('目标选择器名')
切换类
获取元素->获取名.classList.toggle('目标选择器名')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>追加&删除类名</title>
<style>
.box {
width: 200px;
height: 200px;
background-color: red;
}
.add {
margin-left: 200px;
padding: 20px;
}
.delete {
margin-left: 200px;
}
</style>
</head>
<body>
<div class="box"></div>
<script>
const fix = document.querySelector(".box");
// 追加
fix.classList.add("add");
// 删除
fix.classList.remove("add");
// 切换
fix.classList.toggle("delete");
</script>
</body>
</html>
操作表单属性
表单.value='用户名'(eg:表单.type='password')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>修改表单属性</title>
</head>
<body>
<input type="text" value="电脑" /><br />
<input type="checkbox" name="多选" id="多选" class="choose" />全选
<input type="checkbox" class="choose" />选项一
<input type="checkbox" class="choose" />选项二
<input type="checkbox" class="choose" />选项三
<input type="checkbox" class="choose" />选项四
<script>
const uname = document.querySelector("input");
// 获取表单里面的值
console.log(uname.value); //uname.innerHTML得不到表单的内容,要输入input里面自带的属性值
// 修改值
uname.value = "鼠标";
console.log(uname.value);
console.log(uname.type);
uname.type = "password";
console.log(uname.type);
// 一键全选框
const choose = document.querySelector(".choose");
console.log(choose.checked); //false
// 勾选
choose.checked = true;
</script>
</body>
</html>
自定义属性
在后台显示的都是data-......
起名:data-......(叫什么名都行)='(起名)'
输出:获取:const ...=document.qu~('标签名/class名')->输出:log((常量名).dataset)(如果只要输出其中一个:log((常量名).dataset.(data后面的名)))
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>自定义属性</title>
</head>
<body>
<!-- 只要交data-......就行,重要的是data-和""里面的数 -->
<div data-id="1" data-span="不知道">123123123123</div>
<div data-id="2">2</div>
<div data-id="3">3</div>
<div data-id="4">4</div>
<div data-id="5">5</div>
<script>
// 获取元素
const one = document.querySelector("div");
console.log(one.dataset); //data的属性集合
console.log(one.dataset.id); //1
console.log(one.dataset.span); //'不知道'
</script>
</body>
</html>
定时器-间歇函数
setInterval(函数名(不要()),间隔时间)(时间以ms为单位,一s1000ms)
定时器会自动生成一个id号,需要log查一下:let n=setInterval(fn,1000)->~.log(n)(注意:当定时函数被包围时,应在全局范围内定义变量再输出定时器id名)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>定时器</title>
</head>
<body>
<script>
function fn() {
console.log("执行");
}
// setInterval(function(){
// console.log('执行');
// },1000);
// 关闭定时器
// 查询定时器id号
let n = setInterval(fn, 1000);
console.log(n);
let m = setInterval(function () {
console.log("执行2");
}, 2000);
console.log(m);
// 关闭定时器
clearInterval(n);
clearInterval(m);
</script>
</body>
</html>
事件监听
元素对象.addEventListener('事件类型',要执行的函数)
组成&用法
事件源、事件类型、时间调用的函数
之后的函数也可以调用:获取名,动作()
定位器在关闭后开启前要再关闭一次从而开启一个新的定位器,并且要是同一个定位器(id=setIntercal(function(){},......)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>事件监听</title>
<style>
button {
/* 接触到按钮时光标变化 参考菜鸟教程 */
cursor: pointer;
}
</style>
</head>
<body>
<button>按钮</button>
<input type="text" />
<script>
const btn = document.querySelector("button");
// 点击
btn.addEventListener("click", function () {
alert("点击了~");
// 点击完就消失
btn.style.display = "none";
});
// 接触
btn.addEventListener("mouseenter", function () {
console.log("接触了");
});
// 离开
btn.addEventListener("mouseleave", function () {
console.log("离开了");
});
// 点击出现光标时
const input = document.querySelector("input");
input.addEventListener("focus", function () {
console.log("焦点出现");
});
// 除去光标时
input.addEventListener("blur", function () {
console.log("焦点离开");
});
// 键盘按下
// input.addEventListener("keydown", function () {
// console.log("按下了");
// });
// 键盘弹起
// input.addEventListener("keyup", function () {
// console.log("弹起了");
// });
// 输入文本框事件
input.addEventListener("input", function () {
console.log(input.value);
});
</script>
</body>
</html>