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

搞不懂为什么,帮帮忙

有三个问题:1.如果不定义timer控制台会报错,但不影响运行,定义后控制台不报错。

2,看不到向上消失的动画,只有从下向上出现的动画,貌似只执行了第二个动画,也许我看不清,但是不应该。

3.flag在里在外都一样,并未影响,为什么


function getstyle(obj,attr){

if(obj.currentStyle)

{

return obj.currentStyle[attr];

}

else

{

return getComputedStyle(obj,false)[attr];

}

}

var timer=null;

function startMove(obj,json,fn){ //fn为回调函数

clearInterval(obj.timer);

//var flag=true;

obj.timer=setInterval(function(){

//取当前值

var flag=true;

for(var attr in json)

{

var icurr=0;//要获取的属性

var speed=0;

if(attr=='opacity'){

icurr=Math.round(parseFloat(getstyle(obj,attr))*100);

}

else{

   icurr=parseInt(getstyle(obj,attr));

}

//计算速度

speed=(json[attr]-icurr)/8;

speed=speed>0?Math.ceil(speed):Math.floor(speed);

//判断停止

if(icurr!=json[attr])

{

  flag=false;

}

else

{

flag=true;

}

if(attr=='opacity'){

obj.style.filter='alpha(opacity:'+(icurr+speed)+')';//针对IE

obj.style.opacity=(icurr+speed)/100;

}

else{

obj.style[attr]=icurr+speed+'px';

}

}

if(flag=true)

{

clearInterval(timer);

if(fn)

{

fn();

}

}

},30);

}


正在回答

1 回答

  1. clearInterval(timer),应该是obj.timer

  2. 调试看看动画过程是否正确取值和设置值

  3. flag在里面的时候,外面的判断取不到flag的值,obj.timer关不掉。效果看起来当然一样,跟第一问差不多。

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

举报

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

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

进入课程

搞不懂为什么,帮帮忙

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