fengchuanyu 13 ساعت پیش
والد
کامیت
908431a12c
1فایلهای تغییر یافته به همراه72 افزوده شده و 0 حذف شده
  1. 72 0
      4_BOM&DOM/练习题10_防抖节流.html

+ 72 - 0
4_BOM&DOM/练习题10_防抖节流.html

@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <style>
+        .box{
+            width: 90vw;
+            height: 100px;
+            margin:50px auto;
+            background: #aaa;
+            text-align: center;
+            line-height: 100px;
+            font-size: 50px;
+            color: #fff;
+            font-weight: bold;
+        }
+    </style>
+</head>
+<body>
+    <!-- 防抖节流函数 -->
+    <!-- 防抖函数:在事件触发后等待一段时间,只执行一次函数 如果事件触发后在等待时间内再次触发则清除上一次时间再次等待 -->
+    <!-- 节流函数:在事件触发后等待一段时间,只执行一次函数 如果事件触发后在等待时间内再次触发则在等待时间内不执行函数 -->
+    <div class="box" id="box1">0</div>
+    <div class="box" id="box2">0</div>
+    <div class="box" id="box3">0</div>
+    <script>
+        let box1 = document.getElementById('box1');
+        let box2 = document.getElementById('box2');
+        let box3 = document.getElementById('box3');
+
+        // 普通事件
+        box1.onmousemove = function(){
+            this.innerText = Number(this.innerText) + 1;
+        }
+        // 防抖函数
+        // 两个参数 第一个参数是函数(到时间了要干什么) 第二个参数是等待时间
+        function debounce(fn,t){
+            let timer = null;
+            return function(){
+                if(timer){
+                    clearTimeout(timer);
+                }
+                timer = setTimeout(()=>{
+                    fn();
+                },t);
+            }
+        }
+        box2.onmousemove = debounce(function(){
+            box2.innerText = Number(box2.innerText) + 1;
+        },1000);
+        // 节流函数
+        // 两个参数 第一个参数是函数(到时间了要干什么) 第二个参数是等待时间
+        function throttle(fn,t){
+            let timer = null;
+            return function(){
+                if(timer){
+                    return;
+                }
+                timer = setTimeout(()=>{
+                    fn();
+                    timer = null;
+                },t);
+            }
+        }
+        box3.onmousemove = throttle(function(){
+            box3.innerText = Number(box3.innerText) + 1;
+        },1000);
+    </script>    
+</body>
+</html>