DOM之事件监听

431 阅读1分钟

1.什么是事件(用户做的动作)

事件是在编程时系统内发生的动作或者发生的事情
比如用户在网页上单击一个按钮

2.什么是事件监听(让一个元素监听一个事件)

就是让程序检测是否有事件产生,一旦有事件发生,就立即调用一个函数作出响应,也成为绑定事件护着注册事件 比如鼠标经过显示下拉菜单,比如点击可以播放轮播图

1.事件监听(事件绑定)三要素

// 语法:元素对象.addEventListener('事件类型',要执行的函数)
// 三要素:
// 1.事件源:那个dom元素被事件触发了,要获取dom元素
// 2.事件类型:用什么方式触发,比如鼠标单击click、鼠标经过mouseover // 3.事件调用的函数:要做什么事

// click 单击事件

// dblclick 双击事件

2.事件类型

事件的触发方式

1.鼠标事件

    // 1.mouseenter :鼠标经过
    // 2.mouseleave :鼠标离开
    // 3.mousemove :鼠标移动
    // 获取元素
    const div = document.querySelector('div')
    const img = document.querySelector('img')
    div.addEventListener('mouseenter',function(){
      div.style.background = 'purple'
      img.style.visibility = 'visible'
    })
    div.addEventListener('mouseleave',function(){
      div.style.background = ''
      img.style.visibility = 'hidden'
    })
    div.addEventListener('mousemove',function(){
      console.log(Math.random());
    })
  </script>

2.焦点事件

    input{
      border: 1px solid #e0e0e0;
      outline: none;
    }
    .active{
      border:2px solid red;
    }
  </style>
<body>
  <!-- 
1.focus 获得焦点
2.blur 失去焦点
   -->
  <input type="text" name="" id="">
  <!-- <ul>
    <li>陈磊的癖好1</li>
    <li>陈磊的癖好2</li>
  </ul> -->
  <script>
    //获得焦点,添加背景,失去焦点移除背景
    // 1.获得元素
    const inp = document.querySelector('input')
    // 2.监听事件
    // foucs 获得焦点
    inp.addEventListener('focus',function(){
      inp.style.backgroundColor = 'plum'
      inp.classList.add('active')
    })
    // 失去焦点
    inp.addEventListener('blur',function(){
      inp.style.background = ''
      inp.classList.remove('active')
    })
  </script>
</body>

3.文本事件

  <input type="password">
  <button></button>
  <script>
    // 输入事件(表单输入触发的事件)
    const inp = document.querySelector('input')
    const btn = document.querySelector('button')
    inp.addEventListener('input',function(){
      btn.innerHTML = inp.value
    })
  </script>
</body>

4.键盘事件

  <script>
    // keydown:打印按下,键盘按下
    // keyup:打印松开,键盘抬起
    document.addEventListener('keydown',function(){
      console.log('按下');
    })
    document.addEventListener('keyup',function(){
      console.log('抬起');
    })
  </script>
</body>

3.事件对象

    // 事件对象:事件触发时,产生的一个对象,称为事件对象
      //  也是个对象,这个对象里有事件触发时的信息
    // 获取事件对象
      // 事件对象使用:只要在事件处理函数中加入第一个形参即可
      // 在事件绑定的回调函数的第一个参数就是事件对象
      //这个形参通常使用: e,ev,event表示
      document.addEventListener('click',function(a){
        console.log(a);
      })
  </script>

4.事件对象属性

    document.addEventListener('keyup',function(e){
      // 事件对象.key:键盘值(键盘输入的值)
      // console.log(e.key);
      if(e.key === 'q'){
        console.log(1);
      }else if(e.key === 'd'){
        console.log(2);
      }
    })
    // 组合键
    document.addEventListener('keydown',function(ev){
      if(ev.ctrlKey && ev.key === 'Enter'){
        console.log('OK');
      }
    })
  </script>