请问究竟是什么原因注释代码无法达到修改代码的运行效果?
<!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>
正在回答
同学你好,可以参考下方:
注释的代码:页面打开时,执行了循环中的内容,为按钮绑定了点击事件。点击事件在页面打开时不会执行,需要点击按钮才会触发。而事件触发时,for循环早就结束了,所以每一个事件在执行时,alert获取的是最后一次的i值。
同学写的代码:函数可以形成一个局部作用域,即循环3次,调用了3次函数,也就形成了3个不同的作用域。函数中定义了参数,参数相当于局部变量,即每一个作用域下,都能拿到当前不同的i值。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星