代码运行更多每次点击

时间:2017-07-22 23:25:09

标签: javascript html html5 dom browser

当我用鼠标点击时,我想制作页面滚动。但是,当我点击多次时,该功能再次运行。我想只运行一次。当我阅读有关scrollBy的文章时,我想到了这个想法。

我该如何解决这个问题?

注意:我尝试过(onmouseover)事件

window.onclick = function () {
    "use strict";
    var m = setInterval(function () {
        window.scrollBy(0,1);
        console.info(m);
    },4);
    window.onmousemove = function () {
        clearInterval(m);
    };
};

2 个答案:

答案 0 :(得分:0)

保留时间间隔的变量mwindow.onclick的函数范围内定义,这使得它在window.onmousemove内不可用。将变量定义移动到全局范围,然后可以从两个函数中获取它们:

var m;

window.onclick = function () {
    "use strict";
    m = setInterval(function () {
        window.scrollBy(0,1);
        console.info(m);
    },4);
};

window.onmousemove = function () {
    if (m) {
        clearInterval(m);
    }
};

编辑再次阅读您的问题后,您说您只希望此功能运行一次。在这种情况下,添加一个检查以查看它是否已经运行:

var m;
var hasRun = false;

window.onclick = function () {
    "use strict";

    if (!hasRun) {
        m = setInterval(function () {
            window.scrollBy(0,1);
            console.info(m);
        },4);

        hasRun = true;
    }
};

window.onmousemove = function () {
    if (m) {
        clearInterval(m);
    }
};

答案 1 :(得分:0)

特别感谢:rickdenhaan 这是正确的代码:

var m;
var hasRun = false;

window.onclick = function () {
    "use strict";

    if (!hasRun) {
        m = setInterval(function () {
            window.scrollBy(0,1);
            console.info(m);
        },4);

        hasRun = true;
    }
};

window.onmousemove = function () {
    if (m) {
        clearInterval(m);
    }
    var hasRun = false;
};