为了账号安全,请及时绑定邮箱和手机立即绑定

提问:var flag=true放到timer外,回调函数不能执行。放到timer内,运动达不到目标值。

如题,

当flag定义在timer内部的时候,设定是{width:400,height:200},实际上的效果却是比这个值小,并且差值还不是固定的!此时回调函数是可以执行的!

当flag定义在timer外部,目标值可以达到,回调函数不能执行!

求大神解答!


正在回答

2 回答

老师写的这个代码并没有真正地停止过定时器,也就是说就算运动停止了,也只是因为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

}


0 回复 有任何疑惑可以回复我~

好吧。。。我知道了,要把flag定义在timer内,for循环外。。。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

提问:var flag=true放到timer外,回调函数不能执行。放到timer内,运动达不到目标值。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信