我有一些代码要执行的操作是使用滚动触发一个功能,该功能应在滚动时触发
if (flg == 0)
但是如果滚动直到5秒钟才发生,该另一个函数将以
setTimeout
触发,并将变量flg
的值更改为1
,滚动功能应会中断但不起作用。setTimeout
正在将变量值更新为1,但是即使flg
为1,我也不知道为什么滚动功能可以工作。$(function() {
var flg = 0;
//Image Load if Not Scroll ---------------------------
var timer = setTimeout(function() {
flg = 1;
console.log (flg + 'change with timer');
}, 5000);
//Image Load On Scroll-----------
if (flg == 0) {
$(window).scroll(function () {
clearTimeout(timer);
flg = 1;
console.log (flg + 'srsc');
});
};
});
示例https://jsfiddle.net/0p1rob1q/1/
最佳答案
您需要将if
语句放在窗口scroll
事件处理程序中:
$(window).scroll(function() {
if (flg == 0) {
clearTimeout(timer);
...
}
});
覆盖初始的
var
值时,还需要删除关键字flg
,否则它不会影响全局值,而是创建一个新的局部变量。JSFiddle demo。