请问究竟是什么原因注释代码无法达到修改代码的运行效果?

请问究竟是什么原因注释代码无法达到修改代码的运行效果?

<!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);

//     };

//    }

//在此处修改代码

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

    function click(i){btns[i].addEventListener("click",function () {

    alert(i + 1);

    })}

    click(i)

   }

    </script>

</body>

</html>


正在回答

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

2回答

同学你好,可以参考下方:

注释的代码:页面打开时,执行了循环中的内容,为按钮绑定了点击事件。点击事件在页面打开时不会执行,需要点击按钮才会触发。而事件触发时,for循环早就结束了,所以每一个事件在执行时,alert获取的是最后一次的i值。

同学写的代码:函数可以形成一个局部作用域,即循环3次,调用了3次函数,也就形成了3个不同的作用域。函数中定义了参数,参数相当于局部变量,即每一个作用域下,都能拿到当前不同的i值。

祝学习愉快~

好帮手慕言 2020-06-09 16:10:34

同学你好,原因是同学把获取元素的代码也注释了,导致报错。建议:把下方代码解除注释即可。

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

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

  • 提问者 张月白 #1
    谢谢老师,不过我是想问为什么注释代码的运行结果和修改后的代码运行结果不一样,为什么注释代码点击那个按钮,都是alert("4"),本质上来说是什么原因造成的。
    2020-06-09 17:12:41
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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