javascript - 真心求教!关于for循环的问题?

查看:105
本文介绍了javascript - 真心求教!关于for循环的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
div{width: 20px;height: 20px;background-color: red;position: absolute;}
</style>
</head>
<body style="width:4000px;height:2000px">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
<script type="text/javascript">
function getPos(ev)
{
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
return {x:ev.clientX+scrollLeft,y:ev.clientY+scrollTop};
}

document.onmousemove=function(ev)
{
var aDiv=document.getElementsByTagName('div');
var oEvent=ev||event;
var pos=getPos(oEvent);
aDiv[aDiv.length-1].style.left=pos.x+'px';
aDiv[aDiv.length-1].style.top=pos.y+'px';
for(i=0;i<aDiv.length;i++)
{
aDiv[i].style.left=aDiv[i+1].offsetLeft+'px';
aDiv[i].style.top=aDiv[i+1].offsetTop+'px';
}
}
</script>
</html>

这段代码可以运行,但是浏览器也会报错,请教原因。
如果把循环改为

aDiv[0].style.left=pos.x+'px';
aDiv[0].style.top=pos.y+'px';
for(i=aDiv.length-1;i>0;i--)
{
aDiv[i].style.left=aDiv[i-1].offsetLeft+'px';
aDiv[i].style.top=aDiv[i-1].offsetTop+'px';
}

就不会报错了,求大神指点其中缘由,百思不得其解。
另也请指教一下,for循环正过来和倒着用的不同场合,有什么判断依据否?

解决方案

没看问题,先说一句。问问题,学习交流,你总得先让看的人不头疼,把代码给整理下吧。

好了,原谅你了!说问题。

i++那个,你不是后面还有一个i++嘛,超过数组上限了,所以报错。
i--那个,不会超过数组下线,因为你有i>0。也就是0是不会进入的,要进入的最小值是1,i-1=0,0恰好是数组下限,所以没报错。

这应该是一个小问题,细心一下就会发现的(下回,别百思了,呵呵)。

至于你说的什么时候用i++,什么时候用i++,要看你是想从哪头开始取数据而已!

这篇关于javascript - 真心求教!关于for循环的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆