猿问

为什么不能写成obj.currentStyle[attr] || getComputedStyle(obj, false)[attr];

window.onload=function(){
   var aDiv=document.getElementsByTagName('div');
      aDiv[2].onclick=function(){
       startMove(this,"opacity",100)
   }
}


function startMove(obj, attr, iTarget)
{
   clearInterval(obj.timer);
   obj.timer=setInterval(function (){
      var iCur=0;
       var t=obj.currentStyle[attr]||getComputedStyle(obj, false)[attr];
       if(attr=="opacity"){

           iCur=parseInt(parseFloat(t)*100)
       }
       else{
           iCur=parseInt(t);
       }
       var iSpeed=(iTarget-iCur)/8;
       iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);

       if(iCur==iTarget)
       {
           clearInterval(obj.timer);
       }
       else
       {
           if(attr=="opacity"){
               obj.style.filter="alpha(opacity:"+(iCur+iSpeed)+")";
               obj.style[attr]=(iCur+iSpeed)/100;
           }
           else{

               obj.style[attr]=iCur+iSpeed+'px';

           }
       }
   }, 30)
}

慕田峪8701529
浏览 1622回答 1
1回答

橋本奈奈未

currentStyle[attr] 获取属性值的写法应该没问题,但是currentStyle是非标准的,是IE浏览器的API,其实现代浏览器已经可以不用考虑这种情况了,标准方法是通过getComputedStyle获取CSSStyleDeclaration 对象,然后通过CSSStyleDeclaration.getPropertyValue(attr)方法获取属性值
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答