为什么这个点击事件的 i 值可以0,1,2,3呢?之前不是有过一个案例是只能输出4吗?
for(var i=0;i<btns.length;i++){
btns[i].onclick=function(){
switch(this.title){
case "add":
addHandler();
break;
case "substract":
substractHandler();
break;
case "multiply":
multiplyHandler();
break;
case "divide":
divideHandler();
break;
}
};
}
为什么这个点击事件的 i 值可以0,1,2,3呢?之前不是有过一个案例是只能输出4吗?
15
收起
正在回答
2回答
同学你好,理解的是对的,继续加油,祝学习愉快~
好帮手慕言
2020-12-17 18:10:30
同学你好,页面打开时,就会执行循环中的内容,如果在此时打印i,那么每循环一次就会打印一次i,得到的值是0,1,2,3。
点击事件在页面打开时不会执行,需要点击按钮才会触发。而事件触发时,for循环早就结束了,因此在事件中打印i,得到的是循环之后的i值,也就是4。可以参考下方的小例子:
<!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>
<button id="btn">按钮</button>
<script>
var btnEl = document.getElementById("btn")
for (var i = 0; i < 4; i++) {
console.log(i)//会打印0,1,2,3
btnEl.onclick = function () {
// 点击按钮时会打印4
console.log(i)
}
}
</script>
</body>
</html>
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星