防抖,节流 小案例

节流

固定时间之内,多次操作以首次为准,不会触发第二次及以后的

降低代码执行的频率

使用场景:无限加载

  <button id="btn">按钮</button>
    <script>
        var btn = document.getElementById('btn');
​
        var flag = true;
        btn.onclick = function () {
            if (flag) {
                flag = false;
                console.log('aaaa');
​
                setTimeout(() => {
                    flag = true;
                }, 1000);
            }
        }
​
   </script>

防抖

多次操作,以最后一次为准

降低代码执行频率

  <button id="btn">按钮</button>
    <script>
        // 防抖  多次操作,以最后一次为准
        // 降低代码执行频率
​
        var btn = document.getElementById('btn');
​
        var timer;
        btn.onclick = function() {
      clearTimeout(timer);  // 清除上一次点击,生成的延时器
​
            timer = setTimeout(() => {
                console.log(1111);
            }, 1000);
        }

防抖实例 :滚动窗口

<body style="height: 5000px;"> 
    <script>
        var timer;
        window.onscroll = function() {
            clearTimeout(timer);
            timer = setTimeout(() => {
                console.log('aaaaaa');
            }, 1000);
        }
    </script>
</body>

防抖实例:输入框验证

 <!-- 监听输入框,按最后一次输入的内容,允许输入0-9 a-z A-Z  否则提示不符合要求 -->
    <input type="text" id="ipt">
    <span id="err"></span>
    <script>
       var ipt = document.getElementById('ipt');
      var err = document.getElementById('err');
      var str = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890';
        var timer;
        ipt.oninput = function () {
            clearTimeout(timer);
​
            timer = setTimeout(() => {
                console.log(ipt.value);
             for (let i = 0; i < ipt.value.length; i++) {
             if (str.indexOf(ipt.value[i]) == -1) {
           err.textContent = '输入的内容不符合要求';
                        return;
                    } else {
                        err.textContent = '';
                    }
​
                }
            }, 1000);
        }
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值