已采纳回答 / 咳咳九思
从-200到0的第一次运动是:目标值减去元素的left/20 就是(0--200)/20。向目标值移动了10;第二次是(0--190)/20。再次移动了9.5;第三次是(0--180.5)/20.移动了9.025第四次(0--171.475)/20.移动了8.57375;第五次(0--162.901625)/20 .移动8.14508125;。。。。。第N次(0--8.5523424223)/20.结果是0.4332312315,不满一个像素,所以停止只保留前两位小数
2018-12-10
已采纳回答 / 丶归途
使用getElementsByTagName来获取‘a’,此时获取的是一个数组对象,包含3个‘a’对象;然后通过数组编号来准确获取其中一个,或者通过循环遍历这个数组来对这3个进行设置。一段程序里面id只能是唯一的,不能有两个相同ID,在这儿你可以把ID改为class,然后用getElementsByClassName来获取对象,之后是一样的。
2018-09-11
已采纳回答 / 慕先生5247145
speed = speed < 0 ? Math.ceil(speed) : Math.floor(speed); 这句错了;速度为正时,要往上取整,速度为负时,往下取整,你刚好写反了。你与教程视频里的区别在与,教程中判断时 speed>0,你这判断的是<0,所以语句顺序也要改一下。还有重复了<style type="text/css">,按理说这种写错了软件应该会提醒的。加油~
2018-08-08
已采纳回答 / 慕先生5247145
第58行代码错了不是da.style.width=da.offsetLeft+speed+"px"; 时 da.style.left=da.offsetLeft+speed+"px";
2018-08-08
已采纳回答 / 一叶秋才
对的,在调用startMove方法的第二遍的时候this 指代的不是当前这个li标签了 稍微改一下就行 用一个指针存一下:window.onload = function() { var aLi = document.getElementsByTagName('li'); var _this; for(var i = 0; i < aLi.length; i++) { aLi[i].timer = null; aLi[i].onmouseover = function() ...
2018-06-21
已采纳回答 / 慕神7088389
因为startMove()开头就有一个clearInterval(obj.timer);fn()放前面先执行,就回调startMove(),然后直接停掉了定时器,然后就没有然后了。
2018-06-06
已采纳回答 / 阿宅娘
obj.style[filter]改为obj.style['filter'],obj.style.filter === obj.style['filter']
2018-05-23
已采纳回答 / 夜莺_47
如果speed是正数的话,向上取整,比如0.5取到1才有意义,毕竟0.5是有速度的而不是0;如果speed是负数的话,向下取整,比如-0.5取到-1,-0.5会进行反向运动从而达到停止条件iTarget == icur,如果为负数向上取整则Math.ceil(-0.5) = -0则达不到iTarget == icur。因此负数要像下取整Math.floor()
2018-05-02
已采纳回答 / 慕数据9255373
当你多次触碰时,上一次的定时器timer被
var timer=null;重新赋值了(即timer这个定时器的对象找不到了),导致clearInterval(timer),起不了作用。应该将var timer=null;写在函数的外面
2018-04-26