搞不懂為什么,幫幫忙
有三個問題: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);
}
2017-11-30
clearInterval(timer),應該是obj.timer
調試看看動畫過程是否正確取值和設置值
flag在里面的時候,外面的判斷取不到flag的值,obj.timer關不掉。效果看起來當然一樣,跟第一問差不多。