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

clearInterval(timer);不起作用

<!DOCTYPE html>
<html>
    <head>
        <title>Date TEST</title>
        <style>
            #div1{
                left:-200px;
                width: 200px;
                height: 100px;
                position: relative;
                background-color: red;
            }
            #div1 span{
                width: 20px;
                height: 50px;
                background: blue;
                position: absolute;
                left: 200px;
                top: 75px;
            }
        </style>
    </head>
    <body>
        <div id="div1">This is a div for testing animation</br>
            <span>TESTING</span>
        </div>
    </body>
    <script>
        window.onload = function(){
            var oDiv = document.getElementById('div1');
            oDiv.onmouseover = function(){
                startMove();
            }
        }
        var timer = null;
        function startMove(){
            clearInterval(timer);
            var oDiv = document.getElementById('div1');
            timer = setInterval(function(){
                if(oDiv.offsetLeft == 0){
                    clearInterval(timer);
                }
                else
                {
                    oDiv.style.left = oDiv.offsetLeft + 1 + 'px';
                }
            }, 30) 
        }
    </script>
</html>


正在回答

2 回答

body本身的margin属性没有reset

你在CSS里加一句 *{margin:0;padding:0;}

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

刘颜 提问者

非常感谢!
2016-10-31 回复 有任何疑惑可以回复我~

body本身的margin属性没有reset

你在CSS里加一句 *{margin:0;padding:0;}


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

刘颜 提问者

我设置了一下,确实你作用了,想问一下,为什么会这样?为什么设置了 *{margin:0;padding:0;}之后就可以了?
2016-10-31 回复 有任何疑惑可以回复我~
#2

秀man

同问 为什么需要去掉body的默认margin才能有效果,求解
2016-10-31 回复 有任何疑惑可以回复我~
#3

二哥二姐二姐夫 回复 刘颜 提问者

offsetLeft取出来的值,是算上margin的值的了,chrome下为8px,所以你第一次取出的offsetLeft的值为-192px,加1之后设置的left为 -191px; 第二次取出的offsetLeft会再次计算margin的值,所以第二次取出的offsetLeft的值为-183px,加1之后设置的left为 -182px; 也就是说相当于每次向左移动了9px,offsetLeft不会出现等于0的情况。你可以讲判断条件设置为大于零,也会停止
2016-10-31 回复 有任何疑惑可以回复我~
#4

刘颜 提问者 回复 二哥二姐二姐夫

thanks
2016-10-31 回复 有任何疑惑可以回复我~
#5

二哥二姐二姐夫 回复 刘颜 提问者

客气了,其实老师后面有讲到的,我也是初学者,一起努力o( ̄▽ ̄)d
2016-10-31 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

clearInterval(timer);不起作用

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