节流 :防止恶意使用脚本使按钮被每秒多次触发按钮事件

    1. <button id="oBtn">click</button>
    2. <div id="oDiv">0</div
    1. // 节流
    2. var oDiv = document.getElementById("oDiv");
    3. var oBtn = document.getElementById("oBtn");
    4. // 节流函数
    5. function throttle(handler,wait){
    6. var lastTime = 0;;
    7. return function(e){
    8. //此处的this指向oBtn
    9. var nowTime = new Date().getTime();
    10. if( nowTime - lastTime > wait){
    11. handler.apply(this,arguments)
    12. lastTime= nowTime;
    13. }
    14. }
    15. }
    16. // 事件处理函数
    17. function buy (e){
    18. oDiv.innerText = parseInt(oDiv.innerText)+1;
    19. }
    20. oBtn.onclick = throttle(buy,1000)

    防抖
    当输入输入框输入文字时,不能用户输入一个字符就获取,当他输入完后后隔几秒获取

    1. <input type="text" id="inp">
    1. var inp = document.getElementById('inp');
    2. // 防抖函数
    3. function debouce (handle,delay){
    4. var timer = null;
    5. return function(){
    6. var self = this, arg = arguments;
    7. clearTimeout(timer);
    8. timer = setTimeout(function(){
    9. handle.apply(self,arg);
    10. },delay)
    11. }
    12. }
    13. // 事件处理函数
    14. function ajax(e){
    15. console.log(e,this.value);
    16. }
    17. inp.oninput = debouce(ajax,2000);