一、Web API 基本认知
1. 作用和分类
- 作用: 就是使用 JS 去操作 html 和浏览器
- 分类:DOM (文档对象模型)、BOM(浏览器对象模型)
2. 什么是DOM
- DOM(Document Object Model——文档对象模型)是用来呈现以及与任意 HTML 或 XML文档交互的API
- 白话文:DOM是浏览器提供的一套专门用来 操作网页内容 的功能
- DOM作用
3. DOM树
- DOM树是什么
- 将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树
- 描述网页内容关系的名词
- 作用:文档树直观的体现了标签与标签之间的关系

4. DOM对象(重要)
- DOM对象:浏览器根据html标签生成的 JS对象
- 所有的标签属性都可以在这个对象上面找到
- 修改这个对象的属性会自动映射到标签身上
- DOM的核心思想
- document 对象
- 是 DOM 里提供的一个对象
- 所以它提供的属性和方法都是用来访问和操作网页内容的
- 网页所有内容都在document里面
二、获取DOM对象
01-获取元素-querySelector
<body>
<div>
<span>span</span>
<span>我也是span</span>
<a href="" class="mya">我是a</a>
<h2 id="myh2">我是h2</h2>
</div>
<script>
let span = document.querySelector('span')
span.style.color = 'red'
let a = document.querySelector('.mya')
let myh2 = document.querySelector('#myh2')
console.log(a)
console.log(span)
console.log(myh2)
</script>
</body>
02-获取元素-querySelectorAll
<body>
<div>
<span>span</span>
<span>我也是span</span>
<a href="" class="mya">我是a <span>广州黑马程序员中心</span></a>
<h2 id="myh2">我是h2</h2>
</div>
<span>我还是span</span>
<script>
let spans = document.querySelectorAll('span')
console.log(spans)
spans.forEach(function(ele, index) {
console.log(ele, index)
ele.style.color = 'red'
})
</script>
</body>
03 获取元素补充说明
<body>
<ul class="nav">
<li>我的首页</li>
<li>产品介绍</li>
<li>联系方式</li>
</ul>
<ul class="nav2">
<li>我的首页2</li>
<li>产品介绍3</li>
<li>联系方式4</li>
</ul>
<script>
let nav2 = document.querySelector('.nav2')
console.log(nav2)
let lis = nav2.querySelectorAll('li')
console.log(lis)
</script>
</body>
04-其它获取元素的api
<body>
<span class="mya">span</span>
<span>我也是span</span>
<a href="" class="mya">我是a</a>
<a href="" class="mya">我也是a</a>
<h2 id="myh2">我是h2</h2>
<h2 id="myh2">我也是h2</h2>
<input type="text" value="内容" />
<script>
let allA = document.getElementsByClassName('mya')
console.log(allA)
let allSpan = document.getElementsByTagName('span')
console.log(allSpan)
let myh2 = document.getElementById('myh2')
console.log(myh2)
</script>
</body>
三、设置/修改DOM元素内容
05-元素内容的操作
<body>
<div>
<button>点我啊</button>
<h2>
我是DOM
<span>修改DOM元素内容</span>
</h2>
</div>
<script>
let button = document.querySelector('button')
let span = document.querySelector('span')
button.addEventListener('click', function() {
span.innerText = 'abc'
span.innerText = 'abc<hr>'
span.innerHTML = 'abc'
span.innerHTML = 'abc<hr>'
})
</script>
</body>
06-随机点名并渲染在页面的某个位置
<body>
<button>随机抽取</button>
<span>这是渲染位置</span>
<script>
let names = ['张三', '张四', '张六', '张降']
let btn = document.querySelector('button')
let span = document.querySelector('span')
btn.addEventListener('click', function() {
let index = parseInt(Math.random() * names.length)
let name = names[index]
span.innerHTML = name
})
</script>
</body>
06-元素的内容的获取
<body>
<div>
<button>点我啊</button>
<h2>
我是DOM
<span>aa</span>
</h2>
</div>
<script>
let button = document.querySelector('button')
let h2 = document.querySelector('h2')
button.addEventListener('click', function() {
console.log(h2.innerText)
console.log(h2.innerHTML)
})
</script>
</body>
四、设置/修改DOM元素属性
07-元素的属性赋值
<body>
<button>点我啊</button>
<p style="color:red">我是p标签</p>
<img src="" alt="" />
<input type="text" value="aaa" />
<script>
let button = document.querySelector('button')
let p = document.querySelector('p')
let img = document.querySelector('img')
let input = document.querySelector('input')
button.addEventListener('click', function() {
input.value = '这是默认值'
})
</script>
</body>
08-单击显示不同的图片
<body>
<button>单击随机显示图片</button>
<img src="" alt="" />
<script>
let button = document.querySelector('button')
let img = document.querySelector('img')
button.addEventListener('click', function() {
let index = parseInt(Math.random() * 4) + 1
img.src = `./images/${index}.jpg`
})
</script>
</body>
09-元素的样式操作-style
<body>
<button>加啊</button>
<p>我是p元素,我可以动态添加样式</p>
<script>
let button = document.querySelector('button')
let p = document.querySelector('p')
button.addEventListener('click', function() {
p.style.color = 'red'
p.style['font-size'] = '40px'
p.style.textDecoration = 'line-through'
})
</script>
</body>
10-随机切换元素的背景
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
div {
width: 400px;
height: 400px;
border: 1px solid #ccc;
background-image: url(./images/1.jpg);
background-size: contain;
}
</style>
</head>
<body>
<button>点我啊</button>
<div></div>
<script>
let btn = document.querySelector('button')
let div = document.querySelector('div')
btn.addEventListener('click', function() {
let index = parseInt(Math.random() * 4) + 1
div.style.backgroundImage = `url(./images/${index}.jpg)`
})
</script>
</body>
</html>
11-元素的样式类名操作
<body>
<button>改背景</button>
<div class="mydiv">我是内容</div>
<script>
let btn = document.querySelector('button')
let div = document.querySelector('div')
btn.addEventListener('click', function() {
div.className = 'mydiv divborder'
})
</script>
</body>
12-classList操作类名样式
<body>
<button class="add">添加一个字体大小样式</button>
<button class="remove">移除一个字体大小样式</button>
<button class="toggle">切换一个字体大小样式</button>
<button class="contains">判断元素是否有某个样式</button>
<p class="red">我是百变p元素</p>
<script>
let add = document.querySelector('.add')
let remove = document.querySelector('.remove')
let toggle = document.querySelector('.toggle')
let contains = document.querySelector('.contains')
let p = document.querySelector('p')
add.addEventListener('click', function() {
p.classList.add('size50', 'underline')
})
remove.addEventListener('click', function() {
p.classList.remove('size50', 'underline')
})
toggle.addEventListener('click', function() {
p.classList.toggle('size50')
})
contains.addEventListener('click', function() {
let isHas = p.classList.contains('size50')
console.log(isHas)
})
</script>
</body>
13-表单元素属性操作
<body>
<input type="text" class="pass" /> <button class="change">变</button>
<br />
<input type="checkbox" class="chkAll" />全选
<div>
<input type="checkbox" />写代码 <input type="checkbox" />调bug
<input type="checkbox" />写文档
</div>
<button class="getChioce">获取用户选择</button>
<script>
let pass = document.querySelector('.pass')
let change = document.querySelector('.change')
change.addEventListener('click', function() {
if (pass.type == 'text') {
pass.type = 'password'
} else {
pass.type = 'text'
}
})
let chkAll = document.querySelector('.chkAll')
let chks = document.querySelectorAll('div > input')
chkAll.addEventListener('click', function() {
let state = chkAll.checked
chks.forEach(function(ele) {
ele.checked = state
})
})
</script>
</body>
五、定时器
14-添加定时器
<script>
setInterval(function() {
console.log('还早')
}, 5000)
</script>
15-关闭定时器
<body>
<button class="no">别说了</button>
<button class="go">继续说</button>
<span>5</span>
<script>
let go = document.querySelector('.go')
let no = document.querySelector('.no')
let span = document.querySelector('span')
let count = 10
let timeId = setInterval(function() {
span.innerText = count + '秒'
count--
}, 1000)
no.addEventListener('click', function() {
clearInterval(timeId)
})
go.addEventListener('click', function() {
timeId = setInterval(function() {
span.innerText = count + '秒'
count--
}, 1000)
})
</script>
</body>
16-倒计时
<body>
<input type="button" value="发送验证码" />
<script>
let btn = document.querySelector('input')
btn.addEventListener('click', function() {
let count = 5
btn.disabled = true
let timeId = setInterval(function() {
btn.value = count + '秒之后重新发送'
count--
if (count < 0) {
clearInterval(timeId)
btn.value = '发送验证码'
btn.disabled = false
}
}, 1000)
})
</script>
17-自动切换图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
div {
width: 700px;
height: 320px;
margin: 100px auto;
position: relative;
}
p {
position: absolute;
left: 0;
bottom: 0;
line-height: 50px;
background-color: #666;
color: #fff;
width: 100%;
padding-left: 10px;
font-size: 20px;
box-sizing: border-box;
}
</style>
</head>
<body>
<div>
<img src="./images/b01.jpg" alt="" />
<p>第1张图片</p>
</div>
<script>
let img = document.querySelector('img')
let p = document.querySelector('p')
let index = 1
setInterval(function() {
index++
if (index > 9) {
index = 1
}
img.src = `./images/b0${index}.jpg`
p.innerHTML = `第${index}张图片`
}, 1000)
</script>
</body>
</html>