事件得概念

 事件:

能被js监听到的行为

事件三要素:

1. 事件源: 触发事件的源头,谁触发的这个事件(oBtn)

 2. 事件类型:是哪种事件类型,如:鼠标事件,键盘事件。。。。。(click,dblclick,mouseover,mouseout.....)

3. 事件处理函数: 事件触发后执行的行为({}中会执行的代码)

1,oBtn.onclick = function(){}

2,obtn.onclick = fn

   function fn(){}

事件中的this: 指向事件源

普通函数中的this:指向的是window

 oBtn.onclick = function(){

        this指向的就是oBtn  

      }
 oBtn.onclick =  fn(不要带括号) 

  function fn(){   this指向的就是oBtn   }

<button onclick = 'del(this)'></button>

function del(obj){

        obj 指代的就是点击元素

    }

 1、事件绑定(事件注册):

 1.1  DOM0级事件绑定

          语法:事件源.on事件类型 = 事件处理函数

          距离:div.onclick = function(){}

          缺点:不能给同一个对象的同一个事件进行多次绑定

          优点:书写简单,兼容性好

1.2 DOM2级事件绑定(事件监听)

         1.2.1

          语法:事件源.addEventListener("事件类型",事件处理函数,布尔值);第三参数可以省去

         事件源.addEventListener("事件类型",事件处理函数);第三参数可以省去

          优点:可以给同一个对象的同一个事件进行多次绑定

          缺点:兼容性不好(IE低版本的不支持该写法)

 1.2.2 IE低版本支持

           语法:事件源.attachEvent('on事件类型',事件处理函数);只有两个参数

案列点击div,变色更改内容

1. DOM0级事件绑定

     1. DOM0级事件绑定



     A写的

    // oDiv.onclick = function () {

    //     this.style.backgroundColor = 'yellow'

    // }



    B写的

    // oDiv.onclick = function () {

    //     this.innerHTML = 'yellow'

    // }

2. DOM2级事件绑定

A

oDiv.addEventListener('click',function(){

this.style.backgroundColor = 'yellow'

    })



B

oDiv.addEventListener('click',function(){

        this.innerHTML = 'yellow'

    })

 DOM0级解绑:

        事件源.on事件类型 = null

 DOM2级解绑:

 语法:事件源.removeEventListener('事件类型',事件处理函数)

        注意:先绑定再移除(函数再外面单独书写)

             1·绑定 事件源.addEventListener('事件类型',fn)

             2·移除 事件源.removeListener('事件类型',fn)

             function fn(){}

    var oBtn = document.querySelector('button')

    var oDiv = document.querySelector('div')


 // // 1. DOM0级事件绑定
    // // 鼠标已入
    // oBtn.onmouseover = function () {
    //     oDiv.style.backgroundColor = 'yellow'
    // }
    // // 鼠标移出
    // oBtn.onmouseout = function () {
    //     oDiv.style.backgroundColor = 'pink'
    //     // 移出的时候把移入事件给清除了
    //     oBtn.onmouseover = null;
    // }

 2. DOM2级事件绑定和解绑

/ 绑定了两个事件

    oBtn.addEventListener('mouseover',fn1)

    oBtn.addEventListener('mouseout',fn2)



 function fn1(){
        oDiv.style.backgroundColor = 'yellow'
    }


 function fn2(){
        oDiv.style.backgroundColor = 'pink'
        // 移除的时候,解绑移入事件
        oBtn.removeEventListener('mouseover',fn1)
    }

 js类型:

      鼠标事件

           click 单击

           dblclick 双击

           mouseover/mouseout 移入移出

           mouseenter/mouseleave 移入移出

           mousedown/mousemove/mouseup 按下/移动/抬起  (拖拽)

           contextmenu 右键

       表单事件

           focus 获取焦点时触发

           blur 失去焦点时触发


 

           input 输入内容时触发

           change 内容改变时触发


 

           submit 提交时触发

           reset  重置时触发

 键盘事件

         注意:不是任何元素都可以绑定键盘事件的,window,document.表单元素是可以绑定这几个事件的

           keydown :按下键盘的键时触发的,会连续触发

           keypress:按住键盘中键时触发的,会连续触发                    

           keyup:从键盘中的一个键抬起时触发,从键上抬起的那一刻触发一次(**)

案列,输入内容时span得内部数字发生变化

1. 输入内容的个数?oIpt.value.length

2. 还剩多少个  100 - 输入的个数

3. 放到span中

$('input').onfocus = function(){

    $('span').innerHTML = '亲,请输入'

    this.nextElementSibling.style.color = 'red'

    this.style.color = 'green'
}

$('input').onblur = function(){

    this.nextElementSibling.innerHTML = ''

}

 键盘事件

         注意:不是任何元素都可以绑定键盘事件的,window,document.表单元素是可以绑定这几个事件的

           keydown :按下键盘的键时触发的,会连续触发

           keypress:按住键盘中键时触发的,会连续触发                    

           keyup:从键盘中的一个键抬起时触发,从键上抬起的那一刻触发一次(**

//    $('input').onkeydown = function(){

//        console.log(1);
//    }

//    $('input').onkeypress = function(){

//        console.log(1);
//    }

// $('input').onkeyup = function(){

//     console.log(1);
// }

 事件对象:

         干什么的:事件对象中包含(记录)该事件发生时的一系列的信息

     事件对象的获取:

        标准浏览下获取:

            事件处理函数的参数位置,书写一个参数,这个参数就是事件对象

            odiv.onclick = function(e){

                e就事件对象

            }

        IE低版本获取: 事件处理函数的内部用window.event来表示事件对象


 

        处理兼容性问题:

         odiv.onclick = function(e){

                var ev = e || window.event;//ev就是兼容性的事件对象

         鼠标事件对象的一些属性:

            1. e.pageX和e.pageY  : 鼠标点击位置距离页面的左偏移量和上偏移量

            1. e.clientX和e.clientY  :鼠标点击位置距离浏览器窗口的左偏移量和上偏移量

            1. e.offsetX和e.offsetY  :鼠标点击位置距离自身元素(事件源)的左偏移量和上偏移量

 $('div').onclick = function (e) {

        // console.log("e.clientX:"+e.clientX+","+"e.pageX:"+e.pageX);
        // console.log("e.clientY:"+e.clientY+","+"e.pageY:"+e.pageY);
     

        console.log(e.clientX);
        console.log(e.clientY);
    }

上一篇:Spring Boot 2.X(一):入门篇


下一篇:仿TheNorthFace官网 购物车效果