函数写法
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>函数节流和函数防抖</title>
<style>
.demo {
width: 200px;
height: 200px;
border: 1px solid red;
overflow-y: scroll;
margin-top: 50px;
}
.scroll {
height: 5000px;
}
</style>
</head>
<body>
<div class="wrap">
<div id="nothing" class="demo">
普通滚动
<div class="scroll"></div>
</div>
<div id="throttle" class="demo">
函数节流
<div class="scroll"></div>
</div>
<div id="debounce" class="demo">
函数防抖
<div class="scroll"></div>
</div>
</div>
<script type="text/javascript">
// 函数防抖
var debounce = function(idle, action) {
var last;
return function() {
clearTimeout(last);
last = setTimeout(function() {
action();
}, idle);
}
};
// 函数节流
var throttle = function(delay, action) {
var last = 0;
return function() {
var curr = new Date();
if (curr - last > delay) {
action();
last = curr;
}
}
};
// 普通滚动
document.getElementById("nothing").onscroll = function() {
console.log("普通滚动");
};
var test1 = throttle(800, function() {
console.log("函数节流了")});
// 函数节流
document.getElementById("throttle").onscroll = function() {
test1();
};
var test2 = debounce(800, function() {
console.log("函数防抖了")});
// 函数防抖
document.getElementById("debounce").onscroll = function() {
test2();
};
</script>
</body>
</html>
网友回复