提問:var flag=true放到timer外,回調函數不能執行。放到timer內,運動達不到目標值。
如題,
當flag定義在timer內部的時候,設定是{width:400,height:200},實際上的效果卻是比這個值小,并且差值還不是固定的!此時回調函數是可以執行的!
當flag定義在timer外部,目標值可以達到,回調函數不能執行!
求大神解答!
如題,
當flag定義在timer內部的時候,設定是{width:400,height:200},實際上的效果卻是比這個值小,并且差值還不是固定的!此時回調函數是可以執行的!
當flag定義在timer外部,目標值可以達到,回調函數不能執行!
求大神解答!
2016-10-25
舉報
2016-11-16
老師寫的這個代碼并沒有真正地停止過定時器,也就是說就算運動停止了,也只是因為speed=0了,沒有了運動的速度兒所以停止了運動,并不是因為調用了clearInterval(timer)。如果clearInterval(timer)被調用了,那么fn()也會被調用。按照老師這個
if(icur!=json[attr] ){
flag=false;
}
的寫法,應該把flag定義在timer內,for循環外,這樣才會通過clearInterval(timer)停止定時器,并且調用fn()。
如果要把flagflag定義在timer外面,那么這個上面那個if語句應該增加一個else語句
if(icur!=json[attr] ){//把flag放在for循環里循環,如果元素的當前值不等于目標值,flag=false
flag=false;
}else{//如果元素的當前值等于目標值,flag=true
flag=true
}
2016-10-25
好吧。。。我知道了,要把flag定義在timer內,for循環外。。。