javascript循环变量I的问题。

vara=document.getElementsByName("img");for(vari=0;i<a.length;i++){a[i].onmouseover=fu... var a=document.getElementsByName("img");
for(var i=0;i<a.length;i++){

a[i].onmouseover=function(){

alert(i);
}

a.length长度是为3的。当鼠标放在图片上时候,alter(i)输出结果为什么是3.我认为应该是2.
展开
 我来答
匿名用户
2012-06-05
展开全部
a【i】.onmouseover=function(){} 这个在for循环中 后面的function只在触发onmouseover这个事件才会真正的起作用,也就是说a【i】在循环定义中,只是定义了一个function的引用并没有实际取到当时的那个值。当定义的循环完毕后,实际最终的i=3,故后面的那个function 触发时候只能取到I=3这个值~!
这个是闭包的问题~!建议查看这方面的知识~!
追问
你说的很有道理。但是I怎么会取到3的。i是必须小于3的。for循环才会运行。如果等3.for循环早就退出了。

我懂了。循环完后i是=3的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2cbd3ce
2012-06-05 · TA获得超过241个赞
知道小有建树答主
回答量:447
采纳率:75%
帮助的人:289万
展开全部
却实是闭包的题,可以改成这样
for(var i=0;i<a.length;i++){
(function(){
var n = i;
a[i].onmouseover=function(){
alert(n);
}})();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式