DOM事件及相关操作

一、阻止事件冒泡

e.stopPropagation()    阻止事件冒泡

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div class="box">
      <div class="son">son</div>
    </div>
    <script>
      const box = document.querySelector('.box')
      const son = document.querySelector('.son')

      son.addEventListener('click', function (e) {
        e.stopPropagation() // 阻止事件冒泡
        console.log('son')
        alert('son')
      })
      box.addEventListener('click', function () {
        console.log('box')
        alert('box')
      })
    </script>
  </body>
</html>

二、阻止默认行为

 e.preventDefault()   阻止默认行为

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <form action="https://www.baidu.com">
      <input type="text" name="username" />
      <button>按钮</button>
    </form>
    <a href="https://www.baidu.com">百度</a>
    <script>
      // 默认行为 超链接点击 默认会跳转
      const alink = document.querySelector('a')
      const form = document.querySelector('form')
      const ipt = document.querySelector('input[name=username]')
      alink.addEventListener('click', function (e) {
        e.preventDefault() // 阻止跳转
        alert('ok')
      })

      form.addEventListener('submit', function (e) {
        if (ipt.value.trim() === '') {
          e.preventDefault() // 阻止默认跳转
        }
      })
    </script>
  </body>
</html>

三、事件解绑

1、DOM 0级事件解绑

        事件触发元素.on事件名 = null

2、DOM 2级事件解绑

        事件触发元素.removeEventListener

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button>dom0级事件</button>
    <button>dom2级事件</button>
    <script>
      const btn = document.querySelectorAll('button')
      btn[0].onclick = function () {
        alert('dom0')
        btn.onclick = null
      }

      function f() {
        alert('dom2')
        // 解除事件绑定
        btn[1].removeEventListener('click', f)
      }
      btn[1].addEventListener('click', f)
    </script>
  </body>
</html>

四、窗口加载事件

1、onload  窗口加载 

        文档全部加载完毕 包括css 图片 js等资源

2、DOMContentLoaded  窗口加载 

        当dom元素加载完毕就执行 不必等其他资源加载完

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      // 窗口加载 onload
      // 文档全部加载完毕 包括css 图片 js等资源
      // window.addEventListener('load', function () {
      //   // 给按钮绑定单击事件
      //   const btn = document.querySelector('button')
      //   console.log(btn)
      //   btn.addEventListener('click', function () {
      //     alert('中国人民万岁')
      //   })
      // })

      // DOMContentLoaded 当dom元素加载完毕就执行 不必等其他资源加载完
      document.addEventListener('DOMContentLoaded', function () {
        // 给按钮绑定单击事件
        const btn = document.querySelector('button')
        console.log(btn)
        btn.addEventListener('click', function () {
          alert('中国人民万岁')
        })
      })
    </script>
  </head>
  <body>
    <button>按钮</button>
  </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值