防抖函数和节流函数小列

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
        #d1{
            background: #ccc;
            height: 200px;
            overflow-x: hidden;
            overflow-y: auto;
        }
        #d11{
            background: green;
            height: 1000px;
        }
        #d2{
            background: #f7f7f7;
            height: 200px;
            overflow-x: hidden;
            overflow-y: auto;
        }
        #d22{
            background: red;
            height: 1000px;
        }
        #d3{
            background: #999;
            height: 200px;
        }
        #d4{
            background: #aaa;
            height: 200px;
        }
        #box{
            position: relative;
        }
        #box0{
            background: #eee;
            height: 260px;
        }
        #p-box{
            position: relative;
        }
        #p-box button{
            position: absolute;
            right: 0;
            top:0;
        }
        #p-box p{
            height: 50px;
            background: #ccc;
            border: 1px solid #fff;
        }
    </style>
</head>
<body>
<div id="box0">box0</div>
<div id="box">
    <div id="d1">
        <div id="d11"></div>
    </div>
    <div id="d2">
        <div id="d22"></div>
    </div>
    <div id="d3">3</div>
    <div id="d4">4</div>
</div>
<div id="p-box">
    <button id="btn">添加</button>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
</div>


<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
    var d1 = document.getElementById('d1');
    var d2 = document.getElementById('d2')
    $(function () {

    })
    var h;
    window.onscroll = function(){
        h = document.documentElement.scrollTop || document.body.scrollTop;
        console.log(h);
    }
    /*setInterval(function () {
        console.log('h'+h);
    },500)*/


    /*节流函数*/  /*、一定时间内业务代码只执行一次,此处1秒内只打印一次0*/
    var canRun = true;
    document.getElementById("d1").onscroll = function(){
        if(!canRun){
            console.log("!canRun");
            // 判断是否已空闲,如果在执行中,则直接return
            return;
        }
        canRun = false;
        setTimeout(function(){
            console.log(0);//真正要执行的业务代码
            canRun = true;
        }, 1000);
    };

    // 函数防抖   /*、频繁出的情况下,一定的空闲时间才去执行一次业务代码,此处3秒不滚动滚动条才打印1*/
    var timer = false;
    document.getElementById("d2").onscroll = function(){
        clearTimeout(timer); // 清除未执行的代码,重置回初始化状态
        timer = setTimeout(function(){
            console.log(1);//真正要执行的业务代码
        }, 3000);
    };



    $("#btn").on("click",function () {
        var p = "<p></p>";
        $("#p-box").append(p);
        console.log(h);
        h+=50;
        $('html,body').animate({
            scrollTop: h
        },200)

    })

    $("#p-box").on("click","p",function () {
        console.log(101);
        console.log(h);
        var _this = $(this);
        _this.remove();
        h-=50;
        console.log(h);
    })


</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值