javascript - 有没有办法让 "onkeydown"返回速度变慢

标签 javascript

我想通过按住右箭头键来增加一个整数。我做的函数可以工作,但返回速度太快。

document.onkeydown = function (e) {
                e = e || window.event;
                if (e.keyCode == '39') {

                        var steps = localStorage.getItem("steps");
                        if (+steps < 9) {
                            if (+steps === +steps) {
                                localStorage.setItem("steps", +steps + +1)
                            }
                        } else {
                            localStorage.setItem("steps", +steps - +10);
                        }
                        var sss = localStorage.getItem("steps");

                        unicorn.className = "unicorn_" + sss + "";

                        return false;
                }
            }

上面的代码是我现在所在的位置。我正在使用 localStorage 检查存储的整数,如果匹配则递增。一旦整数达到 9,就会减回 0。

谁能看出我做错了什么,或者做得不对吗?

最佳答案

您还可以使用闭包手动跟踪时间:

document.onkeydown = (function () {

    var T0 = Date.now();

    return function (event) {
        if (Date.now() - T0 > 500) {
            console.log("doing my thing over here", Math.random());
            T0 = Date.now();
        }
    }
})();

关于javascript - 有没有办法让 "onkeydown"返回速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45992111/

相关文章:

javascript - 类型错误 : Cannot read property 'parentNode' of null while using angular-datatables

javascript - this.method 返回未定义

javascript - 如何在 SlickGrid 中对服务器端的数据进行分组

javascript - 如何显示搜索建议

javascript - 如何将 html 元素另存为 png

javascript - 检查缓存的 JS 文件

javascript - 鼠标悬停在 ag 网格上时行突出显示 react

javascript - mouseenter 事件处理程序在第一次调用该事件时不起作用

java - 使用Bootstrap多选时如何在服务器端获取所选值?

javascript - 如何从另一个文件触发子进程代码?