如何使用clearTimeout()取消函数?

时间:2014-09-14 06:02:48

标签: javascript jquery cleartimeout

当停留底页不到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>

2 个答案:

答案 0 :(得分:0)

您已将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);
    }
});

答案 1 :(得分:0)

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

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);
        }


    }
});