提问:var flag=true放到timer外,回调函数不能执行。放到timer内,运动达不到目标值。
如题,
当flag定义在timer内部的时候,设定是{width:400,height:200},实际上的效果却是比这个值小,并且差值还不是固定的!此时回调函数是可以执行的!
当flag定义在timer外部,目标值可以达到,回调函数不能执行!
求大神解答!
如题,
当flag定义在timer内部的时候,设定是{width:400,height:200},实际上的效果却是比这个值小,并且差值还不是固定的!此时回调函数是可以执行的!
当flag定义在timer外部,目标值可以达到,回调函数不能执行!
求大神解答!
2016-10-25
老师写的这个代码并没有真正地停止过定时器,也就是说就算运动停止了,也只是因为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
}
举报