当前位置:   article > 正文

js实现搜索框的节流与防抖_js 搜索框适用节流还是防抖

js 搜索框适用节流还是防抖


在输入框输入时,要搜索某个字符串,基于性能考虑,肯定不能用户没输入一个字符就发送一次搜索请求,一种方法就是等待用户停止输入,比如过了500ms用户都没有再输入,那么就搜索此时的字符串,这就是防抖;节流比防抖宽松一些,比如我们希望给用户一些搜索提示,所以在用户输入过程中,每过500ms就查询一次相关字符串,这就是节流。

防抖

节流的实现思路:每次触发事件时都取消之前的延时调用方法:

var timer = null
    function input1 () {
      clearTimeout(timer)
      timer = setTimeout(function () {
        // ajax()
        console.log(document.getElementById('input1').value)
      }, 500)
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

节流

防抖的实现思路:每次触发事件时都判断当前是否有等待执行的延时函数:

var flg = false
    function input2 () {
      if (flg) {
        return false
      }
      flg = true
      setTimeout(function () {
        // ajax()
        console.log(document.getElementById('input2').value)
        flg = false
      }, 500)
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

以下是完整示例代码:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <div class="">
      抖动示例:<input id='input1' type="text" name="" value="" onkeydown="input1()">
    </div>
    <div class="">
      节流示例:<input id='input2' type="text" name="" value="" onkeydown="input2()">
    </div>
  </body>
  <script>
    // 防抖
    var timer = null
    function input1 () {
      clearTimeout(timer)
      timer = setTimeout(function () {
       // ajax()
        console.log(document.getElementById('input1').value)
      }, 500)
    }
    // 节流
    var flg = false
    function input2 () {
      if (flg) {
        return false
      }
      flg = true
      setTimeout(function () {
       // ajax()
        console.log(document.getElementById('input2').value)
        flg = false
      }, 500)
    }
  </script>
</html>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号