javascript - 点击按钮 div移动。但第二次点击按钮div的移动速度会累加。求解
高洛峰
高洛峰 2017-04-10 15:03:25
0
5
425

点击按钮 p移动。但第二次点击按钮p的移动速度会累加。求解,代码如下。
http://jsbin.com/menozeyova/1/edit?html,js,output
在每次点击时我已经加了clearInterval。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(5)
洪涛

因为timer是局部变量吧?运行之后就销毁了

小葫芦

var timer = null 移到 startMove() 外面就行了

javascriptwindow.onload = function() {
    var Obtn = document.getElementById("btn1");
    Obtn.onclick = function() {
        startMove();
    };

    var timer = null;

    function startMove() {
        var op = document.getElementById("p1");
        var iSpeed = 1;
        clearInterval(timer); //? 没有作用,第二次点击按钮后p还是会加速
        timer = setInterval(function() {
            if (op.offsetLeft >= 300) {
                clearInterval(timer);
            } else { //这里如果不加else,每次点击按钮时即使条件已经到达,还是会每点击一下按钮,p前进一个iSpeed。因为定时函数不会马上结束,要先把下方的语句执行。
                op.style.left = op.offsetLeft + iSpeed + 'px';
            }
        }, 30);
    }
};
迷茫

你把timer放在函数内定义,每次点击按钮都会新定义一个timer。各个timer之间是独立的,互不影响。
把timer放在函数外定义,这样每次点击按钮操纵的是同一个timer。clearInterval才会生效。

黄舟

setInterval 之前 clearInterval 一下。

Ty80

就是局部变量的问题

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿