为了账号安全,请及时绑定邮箱和手机立即绑定

alert(i);//为是什么 等于2啊?上面的i不是小于lis.length吗??

alert(i);//为是什么 等于2啊?上面的i不是小于lis.length吗??

慕前端8664132 2016-09-04 00:18:01
<a href="#" id="jc">好的</a> <h3>我</h3> <ul>  <li>0</li>  <li>1</li>  </ul>  <script> var lis = document.getElementsByTagName("li");  for(var i = 0; i < lis.length; i++){  lis[i].onclick = function(event){  alert(event); alert(i);//为是什么 等于2啊?上面的i不是小于lis.length吗?? }  }  </script>  
查看完整描述

9 回答

已采纳
?
menghuanbaolei

TA贡献20条经验 获得超2个赞

很有意思的题目,因为点击的时候,里面的 i 会在 i ++ 一次,却不会改变外面的 i

图片上传不了,直接上代码吧,你可以测试看看

		var lis = document.getElementsByTagName("li");
		for(var i = 0; i < lis.length; i++){
			console.log(i); // 一开始输出i
			var is = i;  // 如果想里面的i,跟外面一样的话, 可以在这里赋值一下
			lis[i].onclick = function(event){
				console.log(i); // 当点击的时候输出i
				console.log(is) // 输出的 i 就是 1 了
			}
		}
		
		// 测试循环的
		// for(var j = 1; j <= 10; j++){
		// 	console.log(j);
		// 	document.onclick = function () {
		// 		console.log(j);
		// 	}
		// }		


查看完整回答
2 反对 回复 2016-09-04
?
guaguaerhao

TA贡献1条经验 获得超2个赞

哥们,我觉得是你想得太复杂了吧,i=0的时候,i<lis.length,那么i++第一遍。程序执行一遍了,i就变成了1
那么i=1的时候,i<lis.length还是成立的,那么程序自然就会在执行一遍,那么i自然就会在程序执行一遍之后,i++了。
而这时候的i已经不是刚刚的那个  i=1  的  i  了。而是 i=2 了。所以 i 就是 2呢!!!我就是这么理解的。你思考一下吧。

查看完整回答
2 反对 回复 2016-09-04
?
进击的小开

TA贡献4条经验 获得超0个赞

你没有点击时候,外面的循环是一直在运行的,

查看完整回答
反对 回复 2016-09-04
?
进击的小开

TA贡献4条经验 获得超0个赞

我觉得是函数的作用域与作用域链的问题,

查看完整回答
反对 回复 2016-09-04
?
qq_孤独患者忧于心_03873802

TA贡献1条经验 获得超0个赞

应该是执行次数吧

查看完整回答
反对 回复 2016-09-04
?
qq_奈奈奈_03699702

TA贡献19条经验 获得超5个赞

闭包。

引用了全局变量对象

查看完整回答
反对 回复 2016-09-04
?
LiuYina

TA贡献10条经验 获得超1个赞

其中for循环的作用就是要绑定onclick事件,也就是说当你点击的时候for循环已经结束了,i当然是2(i=1运行完时,自加一后为2,不成立,便跳出循环)。
要换成索引值
alert(lis[i].index);

查看完整回答
反对 回复 2016-09-04
?
stone310

TA贡献361条经验 获得超191个赞

i=0的时候判断i<lis.length为true,然后i++,i=1;

i=1的时候判断i<lis.length为true,然后i++,i=2;

i=2的时候判断i<lis.length为false,

所以最后i为2

i放在事件内部是不会循环的,因为页面加载时for循环绑定了lis[i].onclick事件,而这时候页面加载好后i已经循环完毕,是个定值,就是lis.length,在这里即为2

查看完整回答
反对 回复 2016-09-04
  • 9 回答
  • 0 关注
  • 2513 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信