• 18.事件基础,event对象,clientX,clientY,keyCode


    事件对象:event;用于获取事件的信息,如:clientX,clientY,keyCode,等;

     var oEvent=ev||event;  //ev在ie下需要传参数ev ,event,在firefox,chrome下;

    function(ev){

      var oEvent=ev||event;

    }

    document.onclick;document是html和<!Doctype>的父节点;当要在浏览器窗口界面任意点上触发事件时,用document.

    事件冒泡:一个对象触发事件后,会向它的包含对象传递,触发包含对象的事件;

    取消冒泡:在最初触发事件的对象里取消冒泡,oEvent.cancelBubble=true;

    跟按键相关的事件:onkeydown,onkeyup ,onkeypress;

    oEvent.keyCode  按键对应的码;

    ctrlKey,altKey,shiftKey返回true or false;

     仿下拉列表:

    点击按钮,div显示,在空白处任意点点击,div消失。用到取消冒泡,使得点击按钮后到外围对象上的冒泡被取消。

    <script>
    window.onload=function ()
    {
        var oBtn=document.getElementById('btn1');
        var oDiv=document.getElementById('div1');
        
        oBtn.onclick=function (ev)
        {
            var oEvent=ev||event;
            
            oDiv.style.display='block';
            //alert('按钮被点击了');
            
            oEvent.cancelBubble=true;
        };
        
        document.onclick=function ()
        {
            oDiv.style.display='none';
            //alert('document被点击了');
        };
    };
    </script>

     按键提交信息

    用Enter+Ctrl键,提交信息;

    可以用if条件判断,如果oEvent.keyCode=13 && oEvent.ctrlKey==true;,则在文本域中显示信息;

    js代码

    <script>
    window.onload=function ()
    {
        var oTxt1=document.getElementById('txt1');
        var oTxt2=document.getElementById('txt2');
        
        oTxt1.onkeydown=function (ev)
        {
            var oEvent=ev||event;
            
            if(oEvent.keyCode==13 && oEvent.ctrlKey)
            {
                oTxt2.value+=oTxt1.value+'
    ';
                oTxt1.value='';
            }
        };
    };
    </script>

     div跟随鼠标移动:

    var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;

    var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;

    oDiv.style.left=oEvent.clientX+scrollLeft+'px';//鼠标的绝对位置;

    oDiv.style.top=oEvent.clientY+scrollTop+'px';

    <script>
    function getPos(ev)
    {
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
        
        return {x: ev.clientX+scrollLeft, y: ev.clientY+scrollTop};
    }
    
    document.onmousemove=function (ev)
    {
        var oEvent=ev||event;
        var oDiv=document.getElementById('div1');
        var pos=getPos(oEvent);
        
        oDiv.style.left=pos.x+'px';
        oDiv.style.top=pos.y+'px';
    };
    </script>

    一串div跟随鼠标:

    后一个div的位置等于前一个的位置

    第一个div等于鼠标的位置;

    <script>
    function getPos(ev)
    {
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
        
        return {x: ev.clientX+scrollLeft, y: ev.clientY+scrollTop};
    }
    
    document.onmousemove=function (ev)
    {
        var aDiv=document.getElementsByTagName('div');
        var oEvent=ev||event;
        
        var pos=getPos(oEvent);
        
        for(var i=aDiv.length-1;i>0;i--)
        {
            aDiv[i].style.left=aDiv[i-1].offsetLeft+'px';
            aDiv[i].style.top=aDiv[i-1].offsetTop+'px';
        }
        
        aDiv[0].style.left=pos.x+'px';
        aDiv[0].style.top=pos.y+'px';
    };
    </script>
    View Code

    键盘控制div移动:

    ← →↑↓判断按键对应的keyCode;

    <script>
    document.onkeydown=function (ev)
    {
        var oEvent=ev||event;
        var oDiv=document.getElementById('div1');
        
        if(oEvent.keyCode==37)
        {
            oDiv.style.left=oDiv.offsetLeft-10+'px';
        }
        else if(oEvent.keyCode==39)
        {
            
            oDiv.style.left=oDiv.offsetLeft+10+'px';
        }
    };
    </script>
    View Code
  • 相关阅读:
    ubuntu 16.04 更新后搜狗输入法无法输入中文的问题
    转: 苹果APNS的说明
    转:svn 更新指定文件夹
    转: Java 应用一般架构
    【原创】关于bug反正出现的问题可能
    App开发者博客之: 包建强 (专注移动app开发)
    转: 阿里跨平台移动开发工具Weex
    【原创】存储层设计的一些方法论
    转:车牌的自动截取与识别方案
    转: java web demo的示例
  • 原文地址:https://www.cnblogs.com/maoduoduo/p/3166402.html
Copyright © 2020-2023  润新知