最贊回答 / wy_dxl
第一個函數相當于通知它去改變寬度,通知完之后,不管完成沒完成,都繼續執行第二個函數了,而第二個函數里面也有clearInterval();就把前一個未執行完的動畫清除了,相當于覆蓋了。(改變寬度可能要300ms,而通知可能就要1ms,第二個函數通知的時候也就1ms,很快,就相當于覆蓋了),不知道我說明白了嗎
2016-03-01
已采納回答 / 呆4
經過我的測試,可以這樣理解,在執行第一個startmove中定時器里面的函數的時候是在設定的30ms后才會執行第一次定時器里面的函數,但之后的程序仍然會繼續執行,所以這時就會繼續執行下一個startmove函數,而下一個startmove的第一步就是clearinterval,所以你會發現,第一個startmove的定時器中的函數其實根本就沒有執行,寬度根本一次都沒變,第一個startmove中的定時器在還沒有等到30ms開始執行的時候就已經被clearinterval了,所以你會感覺是第一個沒執行完就開...
2016-03-01
最贊回答 / 撞門人
不該在遍歷內添加flag?=?true;的,假設有兩個CSS屬性,第一個icur != json[i] ?這時flag?=false,但是到第二個屬性時如果icur == json[i],此時flag?=?true,將第一個false覆蓋。所以不能達到想要的效果
2016-02-27
最新回答 / Metotaste
解決方案:需要把下面兩行代碼移動到timer=setInterval()這個方法里的函數的函數體里。?var oDiv = document.getElementById('div1');?var div_width = parseInt(getStyle(oDiv,'width'));最終有效的代碼是這樣的:<...code...>
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