事件对象的理解

定义:举例:鼠标移动是事件,而鼠标移动有位置,对应的坐标就是事件对象;键盘输入是事件,而键盘输入的字母数字等就是键盘输入的对象,也就是事件对象。

元素节点.事件名称= function(事件){},事件一般用e来表示。

鼠标移动的事件对象是鼠标的位置

    <div id=" box"></div>
    <p id="para"></p>
    <script>
           var box =document.getElementById(" box");
        var p =document.getElementById("para");
        box.onmousemove=function(e){
           p.innerHTML="物体内部距离x,y"+e.offsetX+","+e.offsetY+"<br>"+
           "一整张网页不管显示不显示x,y"+e.pageX+","+e.pageY+"<br>"+
           "显示的浏览器x,y"+e.clientX+","+e.clientY+"<br>";

        }
    </script>

键盘事件

对于键盘的元素节点一般是<input>,也可以是documet.

事件名称有:1)onkeyspress,有大小写的字母,数字,对应的事件对象,e.charCode

2)onkeydown,不分大小写的字母,上下键等,对应的事件对象,e.keyCode

对应的案例,键盘上下键控制盒子移动fan

 <div id="box"></div>
    <input type="text" name="" id="oinput">

    <script>
        var box = document.getElementById("box");
        var oinput = document.getElementById("oinput");
        // 起始位置
            var zuoyou=200;
            var  shangxia=200;

           document.onkeydown=function(e){
            switch(e.keyCode){
                         // #向左移动
                         
                case 37: zuoyou-=3;
                break;
                case 38: shangxia-=3;
                break;
                case 39: zuoyou+=3;
                break;
                case 40: shangxia+=3;
                break;
                
            }
            box.style.left= zuoyou +"px";
            box.style.top= shangxia +"px"

        }
        

    </script>

防止默认输入e.preventDefault()

案例一:文本只可以输入小写字母和数字

  <input type="text" id="wenben">
    <script>
        var wenben =document.getElementById("wenben");
        wenben.onkeypress=function(e){
           var shuru= e.charCode;
            if(!(shuru>=48&&shuru<=57||shuru>=97&&shuru<=122)){
                e.preventDefault();
            }
        }
    </script>

案例二:鼠标在盒子内部滚动,数字改变

使用事件阻止默认,是组织鼠标滚动控制了浏览器窗口的滚动。

 <div id="box">
    </div>
    <p id="para"></p>
    <script>
        var box =document.getElementById('box');
        var para =document.getElementById('para');

        var i=0;
        box.onmousewheel=function(e){
            e.preventDefault();

            if(e.deltaY>0){
                i++;

            }else{
                i--;
            }
            // console.log(i);
            para.innerHTML=i;
        }
      
    </script>

阻止事件传递  e.preventPrapation()

将代码放置哪一层就阻止该层于下一层之间的传递。

    <div id="box">
        <button id="btn"></button>
    </div>
    <script>
        oBox=document.getElementById("box");
        oBtn=document.getElementById("btn");

        // 阻止冒泡阶段的传播
        // oBox.onclick=function(){
        //     console.log("我是盒子");
        // }
        // oBtn.onclick=function(e){
        //     console.log("我是按钮");
        //     e.stopPropagation();
        // }

        oBox.addEventListener("click",function(e){
            console.log("我是盒子");
            e.stopPropagation();
        
        },true)
        oBtn.addEventListener("click",function(){
            console.log("我是按钮");
            
        },true)
    </script>

案例:按按钮出现盒子,按页面其他地方(不包括盒子本身)盒子消失

<div id="box"></div>
    <button id="btn">按钮</button>

    <script>
         var oBox=document.getElementById("box");
        var oBtn=document.getElementById("btn");
        oBtn.onclick=function(e){
            oBox.style.display= "block";
            // 切断按钮对网页冒泡阶段传播
            e.stopPropagation();
        }
        document.onclick=function(){
            oBox.style.display= "none";
        }
        oBox.onclick=function(e){
      // 切断盒子对网页冒泡阶段传播
            e.stopPropagation();
        }
    
    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值