關于go函數
function?animate(offset){ var?newLeft?=parseInt(list.style.left)+offset;? var?_time?=740;//位移總時間 var?interval?=?20?//?時間間隔 var?speed?=?offset/(_time/interval);//單位時間位移量 alert(offset); alert(speed); alert("newLeft="?+?newLeft); //內部函數 var?go?=?function(){ if(?(speed<0&&parseInt(list.style.left)>newLeft)|| ????????????????????(speed>0&&parseInt(list.style.left)<newLeft)?){ list.style.left?=?parseInt(list.style.left)?+speed?+"px"; setTimeout(go,interval); }else{ list.style.left=parseInt(list.style.left)+offset+"px"; ????if(newLeft>-740){ list.style.left?=?-3700+"px"; ????} ????if(newLeft<-3700){ list.style.left?=?-740+"px"; ????} } } go(); ????} next.onclick?=?function(){ if(index==4){ index?=?0; }else{ index?+=1; } //alert("test"); showButton(); animate(-740); } prev.onclick?=?function(){ //按鈕復位 if(index==0){ index?=?4; }else{ index?-=?1; } showButton(); animate(740); }
為什么我點next會跳到第三個,在沒寫go函數之前都是正常的,寫了之后有動畫但是會直接跳兩張圖片
2017-07-26
找到問題了,else里面的list.style.left=parseInt(list.style.left)+offset+"px"; 等號后應該用newLeft,用parseInt(list.style.left)相當于又判斷了移動后的位置導致最后一次跳了一張圖片