下面代码,js中为什么发生一个鼠标事件onmousedown后它能确定是第几个循环做的

for(vari=0;i<divs.length;i++){divs[i].onmousedown=function(e){varevent=window.event||... for(var i=0;i<divs.length;i++)
{
divs[i].onmousedown=function(e){
var event=window.event || e;//window.event支持IE;参数e支持非IE
var mouseX=event.clientX;//鼠标坐标x
var mouseY=event.clientY;//鼠标坐标y
var divX=parseInt(this.style.left);//层的x坐标
var divY=parseInt(this.style.top);//层的y坐标
xx=mouseX-divX;
yy=mouseY-divY;
obj=this;
dodo=1;
this.style.zIndex='10';
}
divs[i].onmouseup=function(){
dodo=0;
this.style.zIndex='5';
}
}
html中只有三个div是绝对定位,我输出了一下onmousedown的i,每次都是3那为什么把鼠标放在相应的div还执行相应的代码?
展开
 我来答
ispiders
推荐于2016-11-02 · TA获得超过1240个赞
知道小有建树答主
回答量:517
采纳率:80%
帮助的人:202万
展开全部
那是因为当你执行完事件绑定的for循环之后, i == 3 了, 而你的事件处理都没有用到i, 所以事件正常运行.但是当你输出i的时候就只能得到for循环完成之后 i 的值.
这个可以用闭包的方式解决

for(var i = 0; i < divs.length; i++)
{
(function(i){
// 再把你的事件绑定放这里面来

})(i);

}
cxbvxvcbbvcxb
2014-07-26 · TA获得超过144个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:62.6万
展开全部
请确定i的作用域,js的作用域以function划分,如果以上代码不在function内,则i是全局变量,执行完以上代码后i的值就变为3了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式