如何使用clearTimeout()取消函数

How to cancel function using clearTimeout()?

本文关键字:取消 函数 何使用 clearTimeout      更新时间:2023-09-26

当停留在底部页面不到4秒时,如何使用clearTimeout()取消函数。?

当停留在底部页面4秒时,会发出警报,没事^^

但当停留在底部页面不到4秒时,然后滚动到顶部页面,为什么它会被提醒太

<script src="http://code.jquery.com/jquery-1.7.2.js"></script>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<script>
$(window).scroll(function(){
    var height = $('#idpage').height();
    var scroll_top = $(this).scrollTop();
    if(($(window).scrollTop() + $(window).height() == $(document).height())){
        var timer = setTimeout(function() {
            alert("bottom");   
        }, 4000);
    }
    else{
        clearTimeout(timer);
    }
});
</script>

您已经将timer声明为局部变量,因此每次调用scroll处理程序时都会使用新的变量引用。相反,您需要保留上一个计时器的值,因此需要在scroll处理程序(如)的范围之外声明变量

var timer;
$(window).scroll(function () {
    var height = $('#idpage').height();
    var scroll_top = $(this).scrollTop();
    if (($(window).scrollTop() + $(window).height() == $(document).height())) {
        timer = setTimeout(function () {
            alert("bottom");
        }, 4000);
    } else {
        clearTimeout(timer);
    }
});

您需要在滚动事件的顶部定义计时器变量。

var timer = 0;
$(window).scroll(function(){
    var height = $('#idpage').height();
    var scroll_top = $(this).scrollTop();
    if(($(window).scrollTop() + $(window).height() == $(document).height())){
        var timer = setTimeout(function() {
        }, 4000);
    }
    else{
        if ( timer) {
            console.log(timer);
             clearTimeout(timer);
        }

    }
});