已采納回答 / 咳咳九思
從-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