首页 > 真心求教!关于for循环的问题?

真心求教!关于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++,要看你是想从哪头开始取数据而已!

【热门文章】
【热门文章】