js逻辑封装_防抖

防抖

定义

触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间

函数封装
 function utils (fn, time=500) {
   var timeId = null
   let _arg = arguments
   let _this = this
   // 使用闭包的原因,使得timeId不会被清除,也不会被重新赋值(因为闭包函数一直在使用timeId)
   return function () {
     clearTimeout(timeId)
     timeId = setTimeout(() => {
       fn.apply(_this, arguments)
      }, time)
   }
 }
举例说明-监听滚动条滚动事件
 <body>
    <div id="box">回到顶部</div>
    <script>
      function changTop (e) {
        // 1.获取屏幕的滚动距离(兼容性)
        let _scrollTop =
          window.pageYOffset ||
          document.body.scrollTop ||
          document.documentElement.scrollTop
        console.log(e)
        //2.当屏幕滚动举例大于300px时,显示box
        if (_scrollTop > 300) {
          document.querySelector('#box').style.display = 'block'
        } else {
          document.querySelector('#box').style.display = 'none'
        }
      }
      window.addEventListener('scroll', utils(changTop), false)
    </script>
  </body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值