if语句的Javascript问题

时间:2014-01-20 23:15:25

标签: javascript

我写了一个简单的脚本,不是故意的:

var prevscroll = 0;
$(document).scroll(function(){

    var currscroll = $(document).scrollTop();
    if(currscroll > prevscroll){
        $("header").toggle();
        prevscroll = currscroll;
    }
    if(currscroll < prevscroll){
        $("header").toggle();
        prevscroll = currscroll;
    }
});

当页面向下滚动时,它意味着隐藏标题,只有在它向上滚动时才显示它,但是当我向下滚动它的轻弹时,它会发生什么。 :|

我想我可能只是发现了一个愚蠢的错误!因为普通卷轴不断增加,所以它会继续闪烁。

1 个答案:

答案 0 :(得分:2)

你不能按照你自己的方式使用toggle()因为滚动事件被调用了很多次,所以如果它被调用多次而你的if语句具有相同的值,那么它将会每次拨打.toggle()时闪烁,然后关闭,然后再打开,然后关闭。您需要在满足条件时明确隐藏或显示。

我并不完全遵循你要对prevscroll做的事情,但也许这就是你想要的:

var prevscroll = 0;
$(document).scroll(function(){

    var currscroll = $(document).scrollTop();
    if(currscroll > prevscroll){
        $("header").hide();
        prevscroll = currscroll;
    }
    if(currscroll < prevscroll){
        $("header").show();
        prevscroll = currscroll;
    }
});

这会在您进一步向下滚动时隐藏标题,并在您开始向上滚动时立即显示标题。