为什么这个点击事件的 i 值可以0,1,2,3呢?之前不是有过一个案例是只能输出4吗?

为什么这个点击事件的 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吗?


正在回答

登陆购买课程后可参与讨论,去登陆

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>

​祝学习愉快~

  • 提问者 慕前端2185815 #1

    意思就是说:btns[i]的值可以选取0、1 、2 、3。但是如果在点击事件内部添加一个语句:“btns[i].value=i;时,此时 i 的值只能取值为4。这样理解对吗?

    2020-12-17 21:59:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师