![](https://i-blog.csdnimg.cn/blog_migrate/637fddec239ea9fa9cd323dca8fd7a98.gif)
<!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>闭包点赞功能</title>
<style>
* {
margin: auto;
padding: 0;
}
ul,
li {
list-style: none;
}
ul {
width: 600px;
margin: 50px auto;
display: flex;
justify-content: space-between;
}
li {
display: flex;
flex-direction: column;
}
img {
width: 170px;
height: 300px;
}
button {
width: 80px;
height: 30px;
margin-top: 10px;
background-color: cadetblue;
border: none;
}
</style>
</head>
<body>
<ul>
<li>
<img src="image/01.jpg" alt="">
<button class="btn1">点赞<span>0</span></button>
</li>
<li>
<img src="image/02.jpg" alt="">
<button class="btn2">点赞<span>0</span></button>
</li>
<li>
<img src="image/03.jpg" alt="">
<button class="btn3">点赞<span>0</span></button>
</li>
</ul>
<script>
//获取元素节点
const buttonEles = document.querySelectorAll('button')
const spanEles = document.querySelectorAll('span')
const ulEle=document.querySelector('ul')
//循环遍历
//方式一:形成闭包
for (let i = 0; i < buttonEles.length; i++) {
function f() {
var num = 0
buttonEles[i].onclick = function () {
num++
spanEles[i].innerHTML = num
}
}
f()
}
//方式二:用let定义变量
// for (let i = 0; i < buttonEles.length; i++) {
// let num = 0
// buttonEles[i].onclick = function () {
// num++
// spanEles[i].innerHTML = num
// }
// }
</script>
</body>
</html>