首页 > 其他 > 详细

事件节流和防抖

时间:2021-08-23 08:53:54      阅读:29      评论:0      收藏:0      [点我收藏+]

1、事件节流

<!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>
  <input type="text" id="input">
  <script>
    //  // 事件节流: 设置一个时间间隔,时间间隔内只允许执行一次如果在这个时间间隔内多次触发,也只执行一次
    function throttle(fn, wait) {
      var context = this
      let lastTime = 0
      return function(...args) {
        let now = + new Date()        // + 将事件格式改为数字型的时间字符串
        if((now -lastTime) > wait) {
          fn.apply(context, args)
          lastTime = now
        }
      }
    }

    var input = document.querySelector("#input")
    input.oninput = throttle(fn,2000)
    function fn() {
      console.log(111)
    }
  </script>
</body>
</html>

 

2、事件防抖

<!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 id="btn">asdsad</button>

  <script>
  //  防抖函数:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时
    function debounce(func, wait) {
      var timeout
      return function () {
        var context = this
        console.log(this)
        var args = arguments
        clearTimeout(timeout)
        timeout = setTimeout(function() {
          func.apply(context,args)
        },wait)
      }
    }

    var btn = document.querySelector("#btn")
    function fn() {
      console.log(111)
    }
    btn.onclick = debounce(fn,1000)
  </script>
</body>
</html>

 

事件节流和防抖

原文:https://www.cnblogs.com/hll1109/p/15173958.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!