@ritasun 比如移动到的目标值是300px,通过300减去当前的坐标0,再除以20,结果是15,div以15的速度向右移动,这是第一次定时器执行的结果。30毫秒后再执行一次,目标移动到了15,通过300减去当前坐标15结果是285,285除以20结果的14.25,这样一次次运算下来,速度越来越小,比如速度是15、14.25、12.73、7.2。。。。这样的。
2016-02-22
已采纳回答 / kaiyanghll
function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; } else{ return getComputedStyle(obj,false)[attr]; } } function startMove(obj,iTarget,attr,fn){ clearInterval(obj.timer); ...
2016-02-21
已采纳回答 / wanoneQ
第八行 oar=getStyle(obj,attr)*100;中getStyle(obj,attr)需要用parseFloat()函数转换为数字,再四舍五入提高准确度。oar=Math.round( parseFloat( getStyle(obj,attr) )*100);另外你的速度有问题,建议提高精确度采用缓冲动画,防止边缘抖动。
2016-02-19
已采纳回答 / Betsey
第44行的attr没有定义,应该把attr换成'width',因为attr是在getStyle()里面的局部变量,离开了getStyle()就会销毁
2016-02-19
已采纳回答 / 慕容6759333
比如移动到的目标值是300px,通过300减去当前的坐标0,再除以20,结果是15,div以15的速度向右移动,这是第一次定时器执行的结果。30毫秒后再执行一次,目标移动到了15,通过300减去当前坐标15结果是285,285除以20结果的14.25,这样一次次运算下来,速度越来越小,比如速度是15、14.25、12.73、7.2。。。。这样的。由于数值设置的原因,div移动到一定px后,进行相减再除20的运算后会出现小数,比如0.75,比如这时div移动到了290,程序里写到div的left=oDiv....
2016-02-17
最赞回答 / qq_发条橙子_0
box2.onmouseover=omove; 执行这条语句的意思是box2的鼠标事件指向一个叫omove名字的function;box2.onmouseover=omove(0);执行这条语句的意思是box2指向的是omove运行的结果,而结果自然要运行出来才知道,omove函数就直接被调用了。于是不等鼠标over分享框就自己动起来了。但是omove又要接收参数,所以就把omove放在一个function里面。
2016-02-17