1.动态添加属性的方法
<body>
<ul>
<li>星期1</li>
<li>星期2</li>
<li>星期3</li>
<li>星期4</li>
<li>星期5</li>
</ul>
</body>
<script>
var lis = document.querySelectorAll('li');
for (var i = 0; i < lis.length; i++) {
//添加自定义属性index
lis[i].index = i;
lis[i].onclick = function() {
//console.log(i);//这种输出的i都是5
console.log(this.index);//打印当前li的index
}
}
</script>
2.利用闭包的方式
// 立即执行函数也称为小闭包因为立即执行函数里面的任何一个函数都可以使用它的i这个变量
var lis = document.querySelectorAll('li');
for (var i = 0; i < lis.length; i++) {
//利用for循环创建了5个立即执行函数
(function(j) {
lis[j].onclick = function() {
console.log(j); //打印当前li的i
}
})(i);
}
//这里改变了i的作用域(以前是全局变量,现在作为实参传递给变量j)
//在内存中开辟了一个内存空间存储了作为参数传进来的i的值