Javascript 如何为停止/启动设置间隔功能仅设置一个键

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

我有使用键停止和启动设置间隔的功能。 它以s键开始,以Z键停止

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和附件”部分。