【问题标题】:code runs more every click每次点击代码运行更多
【发布时间】:2017-07-25 07:36:44
【问题描述】:

当我点击鼠标时,我想让页面滚动。但是当我点击不止一次时,该功能再次运行。我只想运行一次。当我读到关于 scrollBy 的文章时,我想到了这个想法。

我该如何解决这个问题?

注意:我试过(onmouseover)事件

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

【问题讨论】:

标签: javascript html dom browser


【解决方案1】:

保存间隔的变量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);
    }
};

【讨论】:

  • 感谢您的帮助。但我做了一个小编辑,让它通过这段代码再次运行 `var m; var hasRun = false; window.onclick = function () { "使用严格"; if (!hasRun) { m = setInterval(function () { window.scrollBy(0,1); console.info(m); },4);有运行=真; } }; window.onmousemove = function () { if (m) { clearInterval(m); } var hasRun = false; };`
【解决方案2】:

特别感谢: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;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多