已采纳回答 / 慕粉190336714
用控制台查了一下,你的speed 是不变的,这样的话,if(obj.offsetWidth==target)有可能永远都不满足,例如:用速度9从两百运动到400,会刚好错过400这个值,计时器就一直没被清除。解决方法:把speed的计算放进setInterval里面的那个参数下代码: function startMove(obj,target){ clearInterval(obj.timer); obj.timer=setInterval(fun...
2017-09-14
已采纳回答 / Zzmkiv
代码是没错的,但是你没有清除浏览器默认样式。*{margin:0;padding:0},所以你这里每次加上speed 10px,得不到left值为0,会直接由-2px跳到16px
2017-08-06
已采纳回答 / 为彭十七加油oO
因为如果这样先判断有fn()方法时,会先执行调用fn()方法然后执行clearintval(),但是这时候浏览器并不会等到fn()方法执行完才去调用clearintval().它会直接清除fn()内的定时器。正好老师下节课会讲到...
2017-08-03
已采纳回答 / 丶痞子绅士
两种方式除了表面上的区别,浏览器解析和效率上没有本质区别。第一种方式只是多了个匿名函数在里面调用sMove()函数第二种方式直接调用sMove()函数没有优劣之分,如果一定要说哪个好,我本人推崇第一种方式,原因是我用的IDE可以直接转到函数的定义,而第二种方式只有函数名,如果以后代码量很多,不能很方便地找到这个函数本身。
2017-07-11