# js 中 for 循环点击事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<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>
<li>4</li>
<li>5</li>
</ul>
<script>
// for循环
var list_li = document.getElementsByTagName("li");
// 01
for (var i = 0; i < list_li.length; i++) {
(function (i) {
list_li[i].onclick = function () {
console.log(i + 1);
};
})(i);
}
// 02
for (let i = 0; i < list_li.length; i++) {
list_li[i].onclick = function () {
console.log(i + 1);
};
}
// 03
for (var i = 0; i < list_li.length; i++) {
list_li[i].onclick = function () {
console.log(this.innerHTML);
};
}
// 04
for (var i = 0; i < list_li.length; i++) {
//为当前数组项(当前p对象)添加一个名为i的属性,值为循环体i变量的值
//此时当前p对象的i属性并不是对循环体的i变量的引用,而是一个独立p对象的属性,属性值在声明的时候就确定了
list_li[i].i = i;
list_li[i].onclick = function () {
console.log(this.i + 1);
};
}
// 05 增加若干个对应的闭包域空间用来存储下标。新增的匿名闭包空间内完成事件绑定。
for (var i = 0; i < list_li.length; i++) {
list_li[i].onclick = (function (arg) {
return function () {
console.log(arg);
};
})(i + 1);
}
</script>
</body>
</html>