• JS基础(按键事件)


    键盘事件:
    onkeydown
    -按键被按下
    -对于onkeydown来说如果一直按着某个按键不松手,则事件会一直触发
    -当onkeydown连续触发时,第一次和第二次之间会间隔稍微长一点,其他的会非常的快
    这种设计是为了防止误操作的发生。
    onkeyup
    -按键被松开
    键盘事件一般都会绑定给一些可以获取到焦点的对象或者是document

    stopPropagation() 方法
    不再派发事件。
    终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。

    可以通过keyCode来获取按键的编码
    通过它可以判断哪个按键被按下
    除了keyCode,
    事件对象中还提供了几个属性
    altKey
    ctrlKey
    shiftKey
    -这个三个用来判断alt ctrl和shift是否被按下
    如果按下则返回true,否则返回false

    在文本框中输入内容,属于onkeydown的默认行为
    如果在onkeydown中取消了默认行为,则输入的内容,不会出现在文本框中

    对应按键实例:

            <style>
                *{
                    margin: 0;
                    padding: 0;
                }
                #box1{
                     100px;
                    height: 100px;
                    background-color: #FF0000;
                    position: absolute;
                    /* transition: all 0.5s linear 0s; */
                    top: 0;
                    left: 0;
                }
            </style>
            <script>
                window.onload=function (){
                    // var input=document.getElementsByTagName('input')[0];
                    // input.onkeydown=function(event){
                    //     event=event || window.event;
                    //     console.log(event.keyCode);
                    // }
                    var box1=document.getElementById('box1');
                    var speed=50;
                    //用来监听按键按下事件
                    //event用来接受对应的事件对象(其中就包括按的什么键)
                    document.onkeydown=function(event){
                        //event.keyCode时对应的按键编码,有专门的一个表
                        switch(event.keyCode){
                            //对应左
                            case 37:
                            box1.style.left=box1.offsetLeft-speed+'px';
                            box1.offsetLeft<=0?box1.style.left=0:0;
                            break;
                            //对应上
                            case 38:
                            box1.style.top=box1.offsetTop-speed+'px';
                            box1.offsetTop<=0?box1.style.top=0:0;
                            break;
                            //对应右
                            case 39:
                            box1.style.left=box1.offsetLeft+speed+'px';
                            box1.offsetLeft>=document.documentElement.clientWidth-box1.offsetWidth?box1.style.left=document.documentElement.clientWidth-box1.offsetWidth+'px':0;
                            break;
                            //对应下
                            case 40:
                            box1.style.top=box1.offsetTop+speed+'px';
                            box1.offsetTop>=document.documentElement.clientHeight-box1.offsetHeight?box1.style.top=document.documentElement.clientHeight-box1.offsetHeight-1+'px':0;
                            break;
                        }
                    }
                }
            </script>
        </head>
        <body>
            <!-- <input id="inP" type="text" /> -->
            <div id="box1"></div>
        </body>
  • 相关阅读:
    Linux下常用的3种软件安装方式
    解决navicate 连接mysql数据库中文乱码的问题
    Lua 遍历Linux目录下的文件夹
    ubuntu 更改源
    ubuntu 下安装配置LAMP
    简述configure、pkg-config、pkg_config_path三者的关系
    linux 下库的深入调研
    Linux下的库操作工具-nm、ar、ldd、ldconfig和ld.so
    linux命令strings
    c++隐式类型转换和explicit
  • 原文地址:https://www.cnblogs.com/MDZZZ/p/12505376.html
Copyright © 2020-2023  润新知