如何只为停止/启动setInterval函数设置一个键

时间:2016-03-12 16:23:27

标签: javascript jquery

我有停止功能并使用键启动setInterval。 它以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键来启动和停止SetInterval? 例如我按Z键然后启动然后我再次按Z键停止! 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

修改您的代码,如下所示

function keyDown() {
 var e = window.event;
 switch (e.keyCode) {
   case 90:
   if(refreshIntervalId) { 
      stop(); 
   } 
   else { 
      start(); 
   }
   break;
 }
}

检查refreshIntervalId是否为真值。如果是,则停止间隔,否则启动它。

答案 1 :(得分:1)

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;

            }
        }