javascript - JS - 如何为我的代码删除 setTimeOut

标签 javascript jquery settimeout cleartimeout

我正在尝试使用垂直滚动来显示对象A。 这个想法是,如果我的滚动高度大于 scrollHeight (15),那么在 1.2 秒 之后,< strong>A 将会出现。 然后当我滚动回到顶部时,A 将隐藏。

现在的问题是,如果我不使用 clearTimeout,setTimeout 将忽略条件:if ( scroll >= scrollHeight )

当我使用 clearTimeout 时,它似乎只在我快速滚动时才起作用,或者它根本不起作用。

这是我的代码。

var scrollHeight = 15;

$(window).scroll(function() {
    var scroll = getCurrentScroll();
    var delayThis;

    if ( scroll >= scrollHeight ) {
        delayThis = setTimeout(function(){

        //Display **A**... 

        }, 1200);

       }
       else{
        // Hide **A** ...
        clearTimeout(delayThis);
        }
  }

非常感谢您的帮助!!

最佳答案

如果消息已经显示,您必须告诉脚本,这样可以避免多次延迟。下面是我正在谈论的工作版本。希望对您有所帮助。

var scrollHeight = 15;
var message = $( ".message" ); 
var messagestatus = false;
var scrollposition;

$(window).scroll(function() { 
    scrollposition = $(document).scrollTop();
    
    if ( scrollposition >= scrollHeight ) {
        if ( messagestatus == false ) {
            setTimeout(function(){

                message.show();
                messagestatus = true;
                
            }, 1200);
        }

    } else{
        message.hide();
        messagestatus = false;
    } 
});
.message {
    display: none;
    position: fixed;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>top</p>
<div class="message">
    Show!
</div>
<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 />
<p>bottom</p>

关于javascript - JS - 如何为我的代码删除 setTimeOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872567/

相关文章:

javascript - 具有构造函数以及 HTML 和 CSS 文件的组件数组。错误 NG2003。 ngFor

javascript - IE11 缺少 DOM 元素

javascript - 相对于主菜单项定位子菜单项,但在外部 div 中

javascript - 如何清除所有 javascript 超时?

javascript - Node js 原型(prototype)对象 'self' var 没有为回调存储正确的上下文

javascript - 第二个显示分区功能不起作用

javascript - 替换的超时事件触发两次或更多次(有时)

javascript - Jquery 使用多行追加

javascript - 将类按顺序添加到一系列元素

javascript - 依次显示元素