节流 :防止恶意使用脚本使按钮被每秒多次触发按钮事件
<button id="oBtn">click</button>
<div id="oDiv">0</div
// 节流
var oDiv = document.getElementById("oDiv");
var oBtn = document.getElementById("oBtn");
// 节流函数
function throttle(handler,wait){
var lastTime = 0;;
return function(e){
//此处的this指向oBtn
var nowTime = new Date().getTime();
if( nowTime - lastTime > wait){
handler.apply(this,arguments)
lastTime= nowTime;
}
}
}
// 事件处理函数
function buy (e){
oDiv.innerText = parseInt(oDiv.innerText)+1;
}
oBtn.onclick = throttle(buy,1000)
防抖
当输入输入框输入文字时,不能用户输入一个字符就获取,当他输入完后后隔几秒获取
<input type="text" id="inp">
var inp = document.getElementById('inp');
// 防抖函数
function debouce (handle,delay){
var timer = null;
return function(){
var self = this, arg = arguments;
clearTimeout(timer);
timer = setTimeout(function(){
handle.apply(self,arg);
},delay)
}
}
// 事件处理函数
function ajax(e){
console.log(e,this.value);
}
inp.oninput = debouce(ajax,2000);