Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 变量值随设置超时而变化_Javascript_Jquery - Fatal编程技术网

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:

听起来像是代码中的逻辑错误。