<!DOCTYPE html> <html> <head> <title></title> </head> <body> <input type="" name=""> </body> <script type="text/javascript">
// 当我们不想 input 每次都触发。 而是 当判断input 在最后一次 的时候在触发; var inp = document.getElementsByTagName('input')[0]; inp.addEventListener('input',inp1(500)); function inp1(delay){ var time = null; return function b(){ var that = this; clearTimeout(time); time = setTimeout(function(){ console.log(112233); },delay) } }
1.函数防抖的要点,也是需要一个setTimeout
来辅助实现。延迟执行需要跑的代码。
2.如果方法多次触发,则把上次记录的延迟执行代码用clearTimeout
清掉,重新开始。
3.如果计时完毕,没有方法进来访问触发,则执行代码