Javascript 变量值随设置超时而变化
我有一些代码,我想做的是触发一个功能与滚动应该被触发Javascript 变量值随设置超时而变化,javascript,jquery,Javascript,Jquery,我有一些代码,我想做的是触发一个功能与滚动应该被触发 if (flg == 0) 但如果滚动直到5秒才发生,则另一个函数将触发setTimeout,它将变量flg值更改为1,滚动函数应中断,但不工作 setTimeout正在将变量值更新为1,但我不知道为什么即使flg为1,滚动功能仍在工作 $(function() { var flg = 0; //Image Load if Not Scroll --------------------------- var tim
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');
});
};
});
示例您需要将
if
语句放在窗口中滚动事件处理程序:
$(window).scroll(function() {
if (flg == 0) {
clearTimeout(timer);
...
}
});
当覆盖初始的flg
值时,还需要删除关键字var
,否则它不会影响全局值,而是创建一个新的局部变量
.您的如果需要在滚动功能中。
它现在的设置方式是在分配回调时检查flg
的值。相反,它应该根据需要进行检查:
$(window).scroll(function abc() {
if (flg === 0) {
clearTimeout(timer);
flg = 1;
console.log(flg + 'srsc');
}
});
更新的fiddle:听起来像是代码中的逻辑错误。