Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS-如何删除我的代码的setTimeOut_Javascript_Jquery_Settimeout_Cleartimeout - Fatal编程技术网

Javascript JS-如何删除我的代码的setTimeOut

Javascript JS-如何删除我的代码的setTimeOut,javascript,jquery,settimeout,cleartimeout,Javascript,Jquery,Settimeout,Cleartimeout,我试图使用垂直滚动显示对象A。 这个想法是,如果我的滚动高度大于scrollHeight(15),那么在1.2秒之后,A将出现。 然后当我滚动回到顶部时,A将隐藏 现在的问题是,如果我不使用clearTimeout,setTimeout将忽略以下条件:if(scroll>=scrollHeight) 当我使用clearTimeout时,它似乎只在我快速滚动时才起作用,或者根本不起作用 这是我的密码 var scrollHeight = 15; $(window).scroll(function

我试图使用垂直滚动显示对象A。 这个想法是,如果我的滚动高度大于scrollHeight(15),那么在1.2秒之后,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);
        }
  }

非常感谢你的帮助

您需要将delayThis放在事件之外,与scrollHeight一起放置。因为否则它就不存在了。现在你有它的地方,它是唯一的本地到一个滚动事件。。。不是正在进行的那些


还有。。。滚动时,您会反复设置超时。因此,在设置之前,您可能希望确保尚未设置延迟。您必须告诉脚本消息是否已显示,这样可以避免多次延迟。下面是我所说内容的工作版本。我希望这有帮助

var scrollHeight=15;
var message=$(“.message”);
var messagestatus=false;
变量位置;
$(窗口)。滚动(函数(){
scrollposition=$(文档).scrollTop();
如果(滚动位置>=滚动高度){
if(messagestatus==false){
setTimeout(函数(){
message.show();
messagestatus=true;
}, 1200);
}
}否则{
message.hide();
messagestatus=false;
} 
});
。消息{
显示:无;
位置:固定;
}

显示






































底部

滚动事件几乎连续触发,您不断添加超时,但对这些超时的引用丢失,这主要是因为变量是在滚动函数中定义的,如果否则没有意义,则创建超时,或者您清除了一个未定义的变量。感谢您指出这个位置!但是Ricardo的回答解决了这个问题为了继续我的评论,这个标志使我的代码(包括clearTimeout工作),然而,你的代码没有删除setTimeOut,因为这是我在这个问题中问的。再次感谢您的回答,使我的代码工作。