为什么我的透明度加到一不停止,我写了清楚定时器啊

来源:2-2 JS透明度动画

慕粉3365042

2016-06-22 11:30

<script type="text/javascript">

window.onload=function(){

var x1=document.getElementById("x1");

x1.onmouseover=bian;

}

var timer=null;

function bian(){

var x1=document.getElementById("x1");

var opacity=0.3;

clearInterval(timer);

timer=setInterval(function(){

if (opacity ==1) {

clearInterval(timer);

}

else{

           opacity=opacity+0.1;

x1.style.opacity=opacity;

}

},30);

}

</script>


写回答 关注

2回答

  • 静语默言
    2016-06-22 14:39:00
    已采纳

    js中的数字都是用浮点数表示的

    你可以看一下每次opacity+0.1得到的值

    http://img.mukewang.com/576a30bf000152d207980412.jpg

    你也可以看一下这篇文章https://segmentfault.com/q/1010000000137297了解一下浮点数的运算


    关于你的问题有两种解法

    第一种解法

    -----用toFixed将opacity四舍五入为仅有一位小数的数字------

    <script type="text/javascript">

    window.onload = function() {

    var x1 = document.getElementById("x1");

    x1.onmouseover = function(){

    bian();

    }

    }

    var timer = null;

    var opacity=0.3;

    function bian() {

    clearInterval(timer);

    var x1 = document.getElementById("x1");

    timer = setInterval(function() {

    if (opacity.toFixed(1) == 1) {

    clearInterval(timer);

    } else {

    opacity+=0.1;

    x1.style.opacity=opacity.toFixed(1)

    }

    }, 30);

    }

    </script>

    第二种解法

    ------将opacity转化为整数-------

    <script type="text/javascript">

    window.onload = function() {

    var x1 = document.getElementById("x1");

    x1.onmouseover = function(){

    bian();

    }

    }

    var timer = null;

    var opacity=30;

    function bian() {

    clearInterval(timer);

    var x1 = document.getElementById("x1");

    timer = setInterval(function() {

    if (opacity== 100) {

    clearInterval(timer);

    } else {

    opacity+=10;

    x1.style.opacity=opacity/100

    }

    }, 30);

    }

    </script>


    静语默言 回复慕粉3365...

    不要客气 其实我也不是大牛 一起加油吧 少年!!!O(∩_∩)O

    2016-06-22 15:03:12

    共 2 条回复 >

  • 000xiaozhi
    2016-06-22 14:39:32

    你把var opacity=0.3;提到bian()外面试一试

    慕粉3365...

    1楼正解,谢谢你帮我,很感谢真的。

    2016-06-22 15:02:48

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题