js判断同时按下两个键

刚刚在学习JS事件这一块儿,看到视频教程中教做飞机大战中飞机移动的程序:

var oDiv = document.getElementById("div1");
    var timer = null;
    var left = false;
    var right = false;
    var top = false;
    var bottom = false;
    setInterval(function(){
        if(left){
            oDiv.style.left = oDiv.offsetLeft-10+"px";
        }else if(top){
            oDiv.style.top = oDiv.offsetTop-10+"px";
        }else if(right){
            oDiv.style.left = oDiv.offsetLeft+10+"px";
        }else if(bottom){
            oDiv.style.top = oDiv.offsetTop+10+"px";
        }
    },50);
    document.onkeydown = function(ev){
        var ev = ev || event;
        var keyCode = ev.keyCode;
        switch(keyCode){
           case 37: left = true;break;
           case 38: top = true;break;
           case 39: right = true;break;
           case 40: bottom = true;break;
        }
    }
    document.onkeyup = function(ev){
        var ev = ev || event;
        var keyCode = ev.keyCode;
        switch(keyCode){
           case 37: left = false;break;
           case 38: top = false;break;
           case 39: right = false;break;
           case 40: bottom = false;break;
        }
    }

这段代码只能上下左右四个方向移动,而不能左上、左下这样移动,我找了一下网上的解决方案,其中有一个是把所有按下去的键的keyCode放到一个数组里,然后通过判断数组中的值来决定执行哪个动作

<script>
    var keyCodeArry=[];
        document.onkeydown=function(ev){
            var oEvent=ev||event;
            keyCode=oEvent.keyCode;
            keyCodeArry=addKeyCodeArry(keyCode,keyCodeArry);
            console.log(keyCodeArry);
        }
        document.onkeyup=function(ev){
            var oEvent=ev||event;
            keyCode=oEvent.keyCode;
            keyCodeArry=deletKeyCodeArry(keyCode,keyCodeArry);
            console.log(keyCodeArry);
        }
        function addKeyCodeArry(num,arr){
            var check=0;
            for (var i=0;i<arr.length;i++) {
                if (arr[i]==num) {
                    check=1;
                }
            }
            if (check==0) {
                arr.push(num);
            }
            return arr;
        }
        function deletKeyCodeArry(num,arr){
            for (var i=0;i<arr.length;i++) {
                if (arr[i]==num) {
                    arr.splice(i,1);
                }
            }
            return arr;
        }
    </script>
时间: 2024-10-12 04:24:06

js判断同时按下两个键的相关文章

js判断复合数据类型的两种方式(typeof不奏效了)

js判断复合数据类型的两种方式(typeof不奏效了) 博客分类: Web前端-JS语言核心 JavaScript 作者:zccst typeof认为所有的复合数据类型都是"object",没法进一步细分,所以还得用其他方法 先上结论: 1,(arr && typeof(arr) === "object" && arr.constructor === Array) 2,Object.prototype.toString.call(ar

jquery中判断是否按下回车enter键

<script>   function sendsubmit()   {   $("#userLoginForm").submit();   return false;   }   $(document).keypress(function(event){   var keycode = (event.keyCode ? event.keyCode : event.which);   if(keycode == '13'){   $("#userLoginForm

Web Js判断键盘出发事件

window.document.onkeydown = disableRefresh; function disableRefresh(evt){ evt = (evt) ? evt : window.event if (evt.keyCode) { if(evt.keyCode == 116){ //do something } } } keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode

Js判断键盘按键

该文转自: namehwh 网址:http://www.cnblogs.com/hanwenhua/articles/3365154.html window.document.onkeydown = disableRefresh; function disableRefresh(evt){ evt = (evt) ? evt : window.event if (evt.keyCode) { if(evt.keyCode == 116){ //do something } } } keycode

IE,火狐,谷歌浏览器下js判断滚动条是否已拉到页面最底部

E/FF/Chrome下document.documentElement和document.body的 scrollHeight/scrollTop/clientHeight 以及判断滚动条是否已拉到页面最底部 DTD已声明 IEdocument.documentElement.scrollHeight  浏览器所有内容高度 ,document.body.scrollHeight  浏览器所有内容高度document.documentElement.scrollTop  浏览器滚动部分高度,do

js判断输入字符串长度(汉字算两个字符,字母数字算一个):例如 要求输入12的字,24个字节

<html> <head> <title>js判断输入字符串长度(汉字算两个字符,字母数字算一个)</title> <style type="text/css"> .pbt { margin-bottom: 10px; } .ie6 .pbt .ftid a, .ie7 .pbt .ftid a { margin-top: 1px; } .cl:after { clear: both; content: ".&quo

js获取键盘按下的键值event.keyCode,event.charCode,event.which的兼容性

js获取键盘按下的键值有event.keyCode,event.charCode和event.which 其中: 谷歌浏览器对event.keyCode,event.charCode和event.which都兼容. 火狐浏览器对event.keyCode部分键值有效,如上下左右键(37,38,39,40),enter键(13),PgUp(33),PgDn(34)等部分有效,对数字键,字母键无效. event.which也是部分键值有效,如字母键,数字键,enter键,Backspace键等有效,

C#-判断Shift,Alt,Ctrl是否被按下,确定所按下的组合键

在创建接受用户击键的应用程序时,您还可能希望监视 SHIFT.ALT 和 CTRL 键等组合键.当一个组合键与其他键同时按下,或在单击鼠标的同时按下时,您的应用程序能够做出适当响应:字母 S 可能仅导致一个"S"出现在屏幕上,但是如果按下 CTRL+S,则可保存当前文档. 确定所按下的组合键 对 ModifierKeys 属性和 Keys 枚举的值使用按位与运算符(在 Visual Basic 中为 And,在Visual C# 中为 &),确定所按下的组合键.(Modifie

js判断字符串是否有下划线

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js判断字符串是否有下划线</title> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> </head> <