我试图在按键命令后不到一秒内将“mouseactive”设置为 true,但如果在该时间段内按下该键,我想取消该操作。但是我似乎不知道如何做到这一点。这就是我所拥有的...
$(window).keydown(function(e) {
if (e.keyCode == 40) {
e.preventDefault();
mouseactive = false;
clearTimeout(t);
var t = setTimeout("mouseActive()",800);
} else if (e.keyCode == 38) {
e.preventDefault();
mouseactive = false;
clearTimeout(t);
var t = setTimeout("mouseActive()",800);
}
});
function mouseActive() {
mouseactive = true;
}
但这不起作用,它不会将 mouseactive 设置回 true...任何人都可以告诉我我在这里做错了什么吗?
最佳答案
编辑:清理冗余代码。
更多编辑:确保您的 var t
是在任何闭包之外定义的,包括 $(document).ready
。见下文,
var t = null;
$(document).ready(function () {
//..below code except for var t = null
});
在处理程序外部声明 var t。
var t = null;
$(window).keydown(function(e) {
e.preventDefault();
if (e.keyCode == 40) {
mouseactive = false;
} else if (e.keyCode == 38) {
mouseactive = false;
}
if (t != null) clearTimeout(t);
t = setTimeout(mouseActive, 800);
});
function mouseActive() {
mouseactive = true;
}
关于javascript - 清除 setTimeout 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10049052/