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