不懂,为什么这样写提示全为3?
<!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');
for (var i = 0; i < 3; i++) {
var count = i;
btns[count].onclick = function () {
alert(count + 1);
};
}
</script>
</body>
</html>
正在回答 回答被采纳积分+1
你好同学,因为页面打开的时候,for循环就立马执行了 ,此时循环3次,依次为按钮绑定事件。而count第一次循环值为0 ,第二次循环又重新定义并赋值为1 .....最终赋值的也是2。代码中var count = i;没有什么意义,因为它们都是全局变量。当点击按钮的时候,for循环早就执行结束了,拿到的count永远是2(加1为3)。
本题应该如下实现:
定义一个函数,把事件写在函数中,在循环中调用。函数会形成一个局部作用域,循环3次,函数调用3次。即形成了3个独立的作用域,那么调用函数时,会把当前的i值传递给参数count,所以每一个函数中,通过参数count保存下来当前的i值,这样拿到的值就不一样了哦。
祝学习愉快,望采纳。
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星