NineSun
2015-08-17 17:27
有没有大神帮我看一下,不知道哪里出问题了,就是停不下来,检查了很多遍了。纠结
window.onload=function(){
var oDiv=document.getElementById("div1");
oDiv.onmouseover=function(){
startMove();
}
}
var timer=null;
function startMove(){
var oDiv=document.getElementById("div1");
timer=setInterval(function()
{
if(oDiv.offsetLeft==0)
{
clearInterval(timer);
}
else
{
oDiv.style.left=oDiv.offsetLeft+10+"px";
}
},30)
}
有可能是你的布局有问题。运动的距离不是10的倍数。*{margin:0;padiding:0;}初始化一下。left要是10的倍数。div没有边框和padding'margin值。
oDiv.offsetLeft>0它就能停下来了
先说明两点
我是学生,以下是个人看法,仅供参考,不过我都测验过了
希望下次把完整的代码发到问题中,这样别人就不用再去写样式,也不用猜你的样式是怎样的
以下是我的回答
1. 设置了margin,没设置left。
结果:会一直往前跑,因为oDiv不知道什么时候停下来,这时候的margin-left代替了left,为什
么会代替,我也不知道。
而且前进的speed为margin-left+10.(因为你设置的是10)
2.没设置margin,设置了left。
结果:不会往前跑(left小于0才行,因为一开始就大于0,而且speed为10(正数),永远都不会
停,因为left永远都不会为0)
3.同时设置了margin和left。
结果:会一直往前跑
前进的speed为margin-left+10(如果speed为负的话,就往相反方向移动)
真正的left(我定义为real-left,好记点)为(margin-left+left)的值,
real-left 为负的时候,以left为准进行计算(判断依据real-left为0的时候,才会停下来),
real-left 为正的时候,以real-left为准进行计算。
如果speed的值恰好能让real-left为0,则能停下来。判断也是real-left为0的时候,才停下来
希望能给我回复,你的问题。这样大家才能共同进步
但是我的初始值是10的整数倍,为什么会不一定等于0呢
默认值+10一直加 不一定等于0 可能直接就大于0 或者小于0 的
JS动画效果
113925 学习 · 1443 问题
相似问题