博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中的额事件一
阅读量:4509 次
发布时间:2019-06-08

本文共 4095 字,大约阅读时间需要 13 分钟。

JavaScript中的额事件一

获取鼠标点击之后的坐标;

//获取鼠标的位置   function getPosition(e){        var x=e.clientX;  //直接这样获取得是:可视区域的        var y=e.clientY;        //还要考虑到非可视区的问题;        var scrollTop=document.body.scrollTop   || document.documentElement.scrollTop;        var scrollLeft=document.body.scrollLeft || document.documentElement.scrollLeft;        x=x+scrollLeft;        y=y+scrollTop;        var obj={x:x,y:y};        return obj;     }   window.onload=function (){      document.onclick=function (ev){           var e =ev || event; //考虑到兼容性的问题;           var obj=new getPosition(e);           alert(obj.x+'--'+obj.y);      }   }

事件冒泡和取消事件冒泡

html:

css:

#div1{
height:100px; width:100px; padding:20px; background:yellow; }#div2{
height:50px; width:50px; padding:20px; background:red; }#div3{
height:40px; width:40px; background:green; }

javascript:

function getStyle(obj,name){      if(obj.currentStyle!=undefined){          return obj.currentStyle[name];      }else{         return  getComputedStyle(obj,false)[name];      }   }   window.onload=function(){      var objs=document.getElementsByTagName('div');      var len=objs.length;      for(var i=0;i

模仿一个select菜单;

function show(ev){       var e=ev ||event;       var obj=document.getElementById("div1");       obj.style.display='block';       e.cancelBubble=true; //记住这里取消冒泡   }      window.onload=function (){      document.onclick=function (ev){            var e=ev || event;            var obj=document.getElementById("div1");            obj.style.display='none';      }   }

接下来做一个:更随鼠标移动的小实例;

html:

 

css:

div{
height:20px; width:20px; background:green;margin-bottom:5px; position:absolute;}

javascript:

function getPosition(e){        var x=e.clientX;  //直接这样获取得是:可视区域的        var y=e.clientY;        //还要考虑到非可视区的问题;        var scrollTop=document.body.scrollTop   || document.documentElement.scrollTop;        var scrollLeft=document.body.scrollLeft || document.documentElement.scrollLeft;        x=x+scrollLeft;        y=y+scrollTop;        var obj={x:x,y:y};        return obj;     }      window.onload=function (){      document.onmousemove=function(ev){          var e=ev || event;          var obj=getPosition(e);          var objs=document.getElementsByTagName("div");          var len=objs.length-1;          for(var i=len;i>0;i--){            objs[i].style.left=objs[i-1].offsetLeft+'px';            //后面一个跟着前面的一个走;            //所以的“走” 就是不断的改变left top 两个属性值滴呀;            objs[i].style.top=objs[i-1].offsetTop+'px';            }          objs[0].style.left=obj.x+'px';          objs[0].style.top=obj.y+'px';      }   }

 

效果:

 

接下来就是我们的按钮事件的的;onkeydown keycode;

小实例:文本框只能输入数字; (也可以使用正则表达式)

window.οnlοad=function (){    var obj=document.getElementById("txt");    obj.onkeydown=function(ev){      var e=ev || event;      var keyCode=e.keyCode;      if((keyCode<96 || keyCode>105) && (keyCode!=8) &&(keyCode!=37) && (keyCode!=39)){         return false;//阻止默认事件滴呀        }else{              }    }  }

方向键控制物体(div)的运动;

function move(val,direction){      var obj=document.getElementById("move");       if(direction=='x'){             obj.style.left=obj.offsetLeft+val+'px';       }else if(direction=='y'){ //这样操作代码看起来要容易理解些           obj.style.top=obj.offsetTop+val+'px';       }else{           //暂时没有设置物体运动的边界滴呀       }  }  //键盘控制物体的运动   window.οnlοad=function (){     document.onkeydown=function (ev){         var e=ev || event; //这样来控制键盘的移动         var keyCode=e.keyCode;         if(keyCode==37){ //左边移动             move(-10,'x');            }else if(keyCode==39){ //右             move(10,'x');         }else if(keyCode==38){  //上             move(-10,'y');                       }else if(keyCode==40){  //下             move(10,'y');          }else{             //不一定要看成左右,上下的运动;             //在计算机中可以看成是x 轴和 y 轴上的运动滴呀         }     } }

但是,这里还有一个小问题,就是当连续的按你方向键的时候,会出现卡顿的现象滴呀;

解决方案:

 

组合键的使用;

 

转载于:https://www.cnblogs.com/mc67/p/5203424.html

你可能感兴趣的文章
Mac下显示和隐藏“隐藏文件”
查看>>
Chessboard POJ - 2446(最大流 || 匹配)
查看>>
Warning: Cannot modify header information原因及解决方案
查看>>
Python ConfigParser模块
查看>>
程序员的学习和积累
查看>>
.net实现支付宝在线支付
查看>>
centos7 swoole 三步搞定全部
查看>>
noip2014day1题解
查看>>
Excel:一些方法的理解
查看>>
【转】在RHEL上升级Python
查看>>
java:环境变量设置
查看>>
Servlet的学习之Response响应对象(3)
查看>>
基础知识回顾——上下文管理器
查看>>
ARM(RISC)和x86(CISC)的技术差异
查看>>
第3章 对象基础
查看>>
文件压缩与解压缩
查看>>
android 搜索自动匹配关键字并且标红
查看>>
Android ViewPager使用详解
查看>>
python爬虫之scrapy的pipeline的使用
查看>>
mysql 1366错误
查看>>