<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
div{width:30px;height:30px;background-color:#06F;position:absolute;top:0;left:0;}
</style>
<script>
function getClint(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 Clint=getClint(oEvent);

for(var 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";
}

aDiv[0].style.left=Clint.x+"px";
aDiv[0].style.top=Clint.y+"px";
}
</script>
</head><body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
</html>
aDiv[0~4].style.left在for中都相等了,按道理看到的是一个div随着鼠标走的,为什么是div都围着第一个走...求大神解析...JavaScript

解决方案 »

  1.   


    /*
     for(var 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";        
        }
    */就是:一个div随着鼠标走的
      

  2.   

    不理解的是aDiv[0~4].style.left都是相等的,为什么现实出的是div的拖走
      

  3.   

    原来的效果就是div拖着div走,
    不理解的是for中的aDiv[0~4].style.left都是相等的,为什么实现出的是div的拖走
      

  4.   

    你有5个div,你的for循环是倒的,也就是div5跟着div4,...div2跟着div1
      

  5.   

    嗯嗯,第五个跟着第四个这样下去,他们的left都是相等的了...为什么是div跟随的效果...
      

  6.   

    嗯嗯,第五个跟着第四个这样下去,他们的left都是相等的了...为什么是div跟随的效果...
    因为代码是写在onmousemove事件处理中。
      

  7.   

    当你鼠标移动的时候第一个div的位置就变了,同时触发事件,执行函数,这时会将其他div的位置变为改div的位置,这时移动鼠标就会发现其他div是随着第一个div动的
      

  8.   

    for 循环里aDiv[i-1].offsetLeft每次都不一样,因为没个div都有宽度到左边的距离就会不断缩小