这样是对的,不过题目说最终输出结果都是4,有点不是很理解题意

这样是对的,不过题目说最终输出结果都是4,有点不是很理解题意

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

<title>变量、作用域</title>

    

</head>

<body>

<button>1</button>

<button>2</button>

<button>3</button>

    <script type="text/javascript">

//     var btns = document.getElementsByTagName('button');

//          for (var i = 0; i < 3; i++) {

//              btns[i].onclick = function () {

//     alert(i + 1);

//     };

//    }

//在此处修改代码

       var btns = document.getElementsByTagName('button');

       function click (i){

           btns[i].onclick = function(){

               alert(i + 1);

           }

       }

       for(var i=0;i<btns.length;i++){

           click(i);

       }

    </script>

</body>

</html>


正在回答 回答被采纳积分+1

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

1回答
好帮手慕慕子 2020-05-27 18:03:05

同学你好,题目中的意思是说,使用如下所示代码,直接给元素绑定点击事件,弹出i值,会导致点击任意按钮弹出来的都是4

http://img1.sycdn.imooc.com//climg/5ece3a6d09e84d2806750165.jpg

造成这种现象的原因是:没有一个作用域保存每一次循环的i值,所以当执行点击事件的时候,就会沿着当前作用域找到for循环中的i,而for循环中i已经是循环完之后的了,所以每次点击都是同一个i值.

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 嘟嘟苏 #1
    懂了懂了,只是没认真审题,以为是要点击每个按钮输出的都是四,原来是改正
    2020-05-27 18:18:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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