当停留底页不到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>
答案 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);
}
}
});