搞不懂为什么,帮帮忙
有三个问题: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);
}