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

定时器没有关闭

定时器不会关闭了,一定都在运行,只是speed是0不在增加而已,

怎么样让定时器关闭呢

正在回答

2 回答

分析:var flag = true;   应该放进for(var attr in json){} 中去 如果不放进去的话     虽然效果是一样的 但是定时器一直就没有停止下来     可以分别在两个 if( iCur !=json[attr]) 和 if(flag) 里面添加console.log(); 来调用查看定时器是否关闭 


原因: 如果var flag = true; 放在 setInterval();的外面 . 在if(iCur !=json[attr])中 flag=flase;  由于flag一直等于flase 就无法执行if(flag)里面的内容

解决: 1.可以将var flag = true ; 放进for(var attr in json){} 里面         2.可以在if(iCur!=json[atter]) 后面加上一个else{ flag = true;}

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

中古 提问者

先谢谢,已经解决了,个人感觉应该把var flag = true ;放进setInterval与for(var attr in json){} 之中,如果按你上述方法的话,json中传的最后一个动画如果完成了,前面的没有完成,那动画也就结束了,直接运行fn函数的动画了
2015-04-15 回复 有任何疑惑可以回复我~
#2

Ripple07 回复 中古 提问者

可是把var flag = true放进serInterval中的话,第一个运动完成了就无法进行了呀,实现不了。。。还修改了别的地方么?
2015-06-29 回复 有任何疑惑可以回复我~

这样解决了timer没关闭的问题。每次循环中如果有一个属性没有达到目标值,则flag为false

function startMove(obj,json,fn){
   var flag = true;
   clearInterval(obj.timer);
   obj.timer = setInterval(function(){
       for(var attr in json){
           var cur = 0;
           iTarget = json[attr];
           if(attr == 'opacity'){
               cur = Math.round(parseFloat(getStyle(obj,attr))*100);
           }else{
               cur = parseInt(getStyle(obj,attr));
           }

           var speed = (iTarget - cur)/8;
           speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
           if( cur == iTarget ){
             flag = true;
           }else{
             flag = false;
           }
           if( attr == 'opacity'){
               obj.style.filter = 'alpha(opacity' + cur + speed + ')';
               obj.style.opacity = (cur + speed)/100;
           }else{
               obj.style[attr] = cur + speed + "px";
           }
       }
       if(flag){
           clearInterval(obj.timer);
           if(fn){
               fn();
           }
       }
   },30);
}

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

qq_请叫我小强_0

没卵用
2016-04-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JS动画效果
  • 参与学习       113925    人
  • 解答问题       1443    个

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

进入课程

定时器没有关闭

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