• js中的事件,事件对象以及相关的事件操作(事件流,事件监听,事件委托等)


    事件:就是对元素的操作,指用户在某事务上由于某种行为所执行的操作;

    函数与事件的关系:所有的事件都会依赖函数执行。

     

    事件的三要素

    ①事件源:是一个名词,指在哪个元素身上引发事件;

    ②事件:是一个动词,也就是要执行的那个动作;

    事件处理程序:函数,也就是做完动作后会执行的操作;

    eg:
    oBth 事件源;onclick 事件;function 事件处理程序;
    
    oBth.onclick = function(){
    
     
    
        }

    事件的种类(只列举了我常用的某些事件):

    ①页面事件:onload  页面加载事件(页面打开后执行);onunload  页面卸载事件(页面关闭时执行)

    ②鼠标事件:onclick  单击;ondblclick  双击;onmousedown  按下;nomouseup  抬起;onmouseover  移入(悬停);onmouseout  移出;onmouseenter  移入;onmouseleaver  移出;onmousemove  移动;oncontextmenu  右键单击

    ③键盘事件:onkeyup  抬起;onkeydown  按下;onkeypress  按下+抬起

    ④其他事件(一般用于表单):onsubmit  表单提交事件(一般用于表单验证);onchange  改变(一般用于下拉列表);onblur  失去焦点;onfocus  获取焦点

     

    事件应用

    事件源.事件 = function(){
    
               执行代码
    
          }    

     

    如何操作页面元素:(DOM中的获取元素)

    操作样式:页面元素.style.样式=值;

    操作内容

           ①操作表单:页面元素.value=值  //属性操作

           ②操作非表单:页面元素.innerHTML=值

     

    操作标签属性:如<img src="">

      页面元素.属性=值

     

      *event:事件对象(有兼容,我会单独写一个关于js的兼容的文本)

       事件对象,听名字就知道是在事件中用的,当触发一个事件的时候,就会产生一个事件对象,不同的事件的事件对象不同。

        event中的属性和方法较多,因此这里用我看到的别人写的一个比较全面的例子:

    Event属性和方法:
    
    1. type:事件的类型,如onlick中的click;
    
    2. srcElement/target:事件源,就是发生事件的元素;
    
    3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下;
    (firefox中 0代表左键,1代表中间键,2代表右键)
    4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的左上角的位置;(在DOM标准中,这两个属性值都不考虑文档的滚动情况,

    也就是说,无论文档滚动到哪里,只要事件发生在窗口左上角,clientX和clientY都是 0,所以在IE中,要想得到事件发生的坐标相对于文档开头的位置,要加上 document.body.scrollLeft和 document.body.scrollTop) 5. offsetX,offsetY/layerX,layerY:事件发生的时候,鼠标相对于源元素左上角的位置; 6. x,y/pageX,pageY:检索相对于父要素鼠标水平坐标的整数; 7. altKey,ctrlKey,shiftKey等:返回一个布尔值; 8. keyCode:返回keydown何keyup事件发生的时候按键的代码,以及keypress 事件的Unicode字符;(firefox2不支持 event.keycode,可以用 event.which替代 ) 9. fromElement,toElement:前者是指代mouseover事件中鼠标移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素; 10. cancelBubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素;(e.cancelBubble = true; 相当于 e.stopPropagation();) 11. returnValue:一个布尔属性,设置为false的时候可以组织浏览器执行默认的事件动作;(e.returnValue = false; 相当于 e.preventDefault();) 12. attachEvent(),detachEvent()/addEventListener(),removeEventListener:为制定 DOM对象事件类型注册多个事件处理函数的方法,
    它们有两个参数,第一个是事件类型,第二个是事件处理函数。在 attachEvent()事件执行的时候,this关键字指向的是window对象,而不是发生事件的那个元素; 13. screenX、screenY:鼠标指针相对于显示器左上角的位置,如果你想打开新的窗口,这两个属性很重要;

        还有一些别的说明,这里是链接:http://www.cnblogs.com/zxktxj/archive/2012/02/26/2369176.html;想看的可以了解。

    事件流
    当产生某个事件时,事件从子元素向父元素触发或从父元素向子元素触发的过程 称为事件流
    事件流的两种模式 :
        事件冒泡  ---  从子元素向父元素触发  small ---> big --> body ---> document ---> window
        事件捕获  ---  从父元素向子元素触发  window -- > document --- > body --- > big --> small
     
    事件冒泡
    事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签
     
    事件绑定  -- 如何为某个元素添加某个事件
    1、<input type='button' onclick = 'fn()'>
    2、obj.onclick = function(){ }
    3、通过  addEventListener()   绑定事件   ----  事件监听 
    用法 :obj.addEventListener("事件去掉on",function(){})   
    第一个参数  事件  
    第二个参数  事件处理程序
    第三个参数  布尔值  默认  false   控制事件冒泡还是事件捕获    true -- 事件捕获
     
    事件监听的好处 :  可以为同一个对象添加多个同样的事件 
                         可以根据事件监听的方法确定到底是事件的冒泡还是事件捕获 
     
    事件冒泡和事件捕获的执行顺序(扩展)
    如果一个元素 既有事件冒泡,又有事件捕获,先执行冒泡?执行捕获??
      先捕获 后冒泡
     
    事件委托
    事件委托 : 又叫事件代理 ,将事件添加到某些元素的父元素或者祖先元素元素上  委托父级或祖先元素完成事件操作
    事件委托机制 :js事件委托,其实是使用了冒泡的原理,从点击的元素开始,会向父元素传播事件
     
    这样做的好处
    1.对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能。
    2.可以处理动态插入dom中的元素,直接绑定的方式是不行的
  • 相关阅读:
    Mysql知识总结
    Unity3D UGUI 自动调节大小
    关于 Rijndael 加密
    配置java环境
    二叉查找树
    序列化和反序列化
    关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。
    关于Unity中NGUI图片精灵响应鼠标的方法
    用人类的话来描述 里氏转换
    C#中string的相关方法
  • 原文地址:https://www.cnblogs.com/cqdd/p/10186823.html
Copyright © 2020-2023  润新知