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

好奇怪啊,是我的浏览器兼容问题吗?IE9以上了,用的opacity属性,JS代码如下,如果iTarget输入为1,就只会到0.7就不动了


var timer = null

var alpha = 1
function starttou(iTarget){
   var oDiv = document.getElementById('oDiv')
   console.log(oDiv.style.opacity)
   clearInterval(timer)
   var speed = null;
   if(iTarget >alpha){
       speed = 0.1
   } else if(iTarget < alpha){
       speed = -0.1
   }
   timer = setInterval(function(){
       if(iTarget ==alpha) {
           clearInterval(timer)
       }
       else{
          alpha = alpha + speed
         alpha = Math.floor(alpha*10)/10   //不知道为什么,输出的alpha不是整数,这里把它取整了
          oDiv.style.opacity =alpha

       }

   },30)

}

正在回答

3 回答

解决办法

   var oDiv = document.getElementById('div1');
   clearInterval(timer);
   var speed = null;
   if(opa >alpha){
       speed = 0.1
   } else if(opa < alpha){
       speed = -0.1
   }
   timer = setInterval(function(){
       if(opa ==alpha) {
           clearInterval(timer);
       }
       else{
          alpha = alpha + speed;
          alpha = opa > alpha ? Math.ceil(alpha * 10) / 10 : Math.floor(alpha * 10) / 10;
          oDiv.style.opacity = alpha;
      }
   },30)

其中Math.ceil()是向上取整。

仅供参考

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

http://img1.sycdn.imooc.com//57be693d0001955407710404.jpg

你看alpha值,每次乘以10之后是7.999999999999999……,所以取整之后得到的都是7,取整操作是舍弃小数部分,所以一直在0.7处循环。

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

Math.floor(alpha*10)/10

一个数乘以10,然后向下去整,然后再除以10,没懂

0.31*10=3.1

取整3

3/10=0.3

3.1*10=31/10=3.1

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

举报

0/150
提交
取消

好奇怪啊,是我的浏览器兼容问题吗?IE9以上了,用的opacity属性,JS代码如下,如果iTarget输入为1,就只会到0.7就不动了

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