Javascript 如何为停止/启动设置间隔功能仅设置一个键
我有使用键停止和启动设置间隔的功能。 它以s键开始,以Z键停止Javascript 如何为停止/启动设置间隔功能仅设置一个键,javascript,jquery,Javascript,Jquery,我有使用键停止和启动设置间隔的功能。 它以s键开始,以Z键停止 var refreshIntervalId; window.addEventListener("onkeydown", keyDown,true); window.addEventListener("keydown", keyDown); function keyDown() { var e = window.event; switch (e.keyCode) { c
var refreshIntervalId;
window.addEventListener("onkeydown", keyDown,true);
window.addEventListener("keydown", keyDown);
function keyDown() {
var e = window.event;
switch (e.keyCode) {
case 83:
start();
break;
case 90:
stop();
break;
}
}
function start() {
stop();
refreshIntervalId = setInterval(function() {
// code...
},10);
}
function stop() {
if (refreshIntervalId != null) {
clearInterval(refreshIntervalId);
refreshIntervalId = null;
}
}
那么,我如何才能设置启动和停止设置间隔的Z键??
例如,我按下Z键,它开始,然后我再次按下Z键,它停止!
有人能帮我吗?修改代码如下:
function keyDown() {
var e = window.event;
switch (e.keyCode) {
case 90:
if(refreshIntervalId) {
stop();
}
else {
start();
}
break;
}
}
检查refreshIntervalId
是否为真实值。如果是,则停止间隔,否则启动间隔
var boolStart = false;
function keyDown() {
var e = window.event;
switch (e.keyCode) {
case 83:
if(!boolStart){
start();
}else{
stop();
}
break;
}
}
function start() {
stop();
boolStart = true;
..
}
function stop() {
boolStart = false;
....
}
编辑1:
你也可以这样做
var boolStart = false;
function keyDown() {
var e = window.event;
switch (e.keyCode) {
case 83:
//;
boolStart = !boolStart;
if (!boolStart) {
start();
} else {
stop();
}
break;
}
}
请检查EDIT1I,我在firefox浏览器中对此代码有问题。当我将此代码放入firefox控制台时,它会显示:TypeError:e未定义如何修复此错误?您的第一个
addEventListener()
调用不正确,不会执行任何操作,因为没有“onkeydown”
事件。在keydown
函数中,而不是var e=window.event
,您只需为函数设置一个参数(当函数被触发时,它将是事件对象),如下所示:function keydown(e){…
它工作正常!因为您的第二个addEventListener()
写得正确,但第一个是不为您做任何事情。没有onkeydown
事件,因此该行不会注册任何内容。它也可以工作,因为您正在获取对事件的引用,但您不需要使用旧方法。您只需将e
参数添加到keydown
函数中,然后删除关于var e..
的行。请参阅:并滚动至“旧版Internet Explorer和附件”部分。