问答详情
源自:4-4 任意属性值(二)

问题是我在chrome浏览器上测试过就算不加Math.round()也不会出现老师说的小数不稳定的情况啊


 window.onload = function(){
  var Li1 = document.getElementById('li1');
       Li1.timer = null;
       Li1.onmouseover = function(){
         startMove(this,'opacity',100);
       }
       Li1.onmouseout = function(){
         startMove(this,'opacity',30);
       }
   }

   var alpha = 30;
 function startMove(obj,attr,iTarget){
      clearInterval(obj.timer);
     
     obj.timer = setInterval(function(){
        var icur = 0;
        if (attr == 'opacity') {
           icur = parseFloat(getStyle(obj,attr))*100;
        }else{
           icur = parseInt(getStyle(obj,attr));
        }

     
        var speed = (iTarget-icur)/8;
        speed = speed > 0 ? Math.ceil(speed):Math.floor(speed);
        if(icur == iTarget){
         clearInterval(obj.timer);
        }else{
         if (attr == 'opacity') {
            obj.style.filter = 'alpha(opacity:'+(icur + speed)+')';
            obj.style.opacity = (icur+speed)/100;
         }else{
            obj.style[attr] = icur + speed + 'px';//.style[attr]方便传参
         }
       
       }
       
      },30)
 }

 function getStyle(obj,attr){
   if (obj.currentStyle) {
     return obj.currentStyle[attr];//支持IE
   }else{
     return getComputedStyle(obj,false)[attr];//支持火狐
   }
 }


提问者:KingZero00 2016-04-06 17:32

个回答

  • qq_囿于平常_0
    2016-04-06 19:35:08
    已采纳

    并不是所有数据都会出现小数点误差情况,老师也列举了好几个,不是就出现一个么。

    虽然误差小,但是加了总比不加合适