Javascript JS-如何删除我的代码的setTimeOut
我试图使用垂直滚动显示对象A。 这个想法是,如果我的滚动高度大于scrollHeight(15),那么在1.2秒之后,A将出现。 然后当我滚动回到顶部时,A将隐藏 现在的问题是,如果我不使用clearTimeout,setTimeout将忽略以下条件:if(scroll>=scrollHeight) 当我使用clearTimeout时,它似乎只在我快速滚动时才起作用,或者根本不起作用 这是我的密码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
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,因为这是我在这个问题中问的。再次感谢您的回答,使我的代码工作。