javascript - 随 setTimeout 改变的变量值

标签 javascript jquery

我有一些代码,我想做的是触发一个带有滚动的功能,该功能应该在以下位置触发

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);
        ...
    }
});

在覆盖初始 flg 值时,您还需要删除关键字 var,否则它不会影响全局值,而是创建一个新的局部变量。

JSFiddle demo .

关于javascript - 随 setTimeout 改变的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100490/

相关文章:

javascript - Serverless express 关闭 mongodb 连接

javascript - 将字符串值传递给动态创建的 HTML 元素

javascript - 使用 Javascript 检测 404 图像

javascript - jQuery 中的术语 "arguments"和 "parameters"之间有什么区别吗?

javascript - 如何正确使用 map() 来迭代数组元素?

javascript - 当 iframe DOM 更改时,目标 ="framename"如何工作

javascript - 对象不支持此属性或方法 - 预期行为,但如何隐藏该消息?

javascript - 悬停时切换缩略图大小

javascript - 将表单 Post 转换为查询字符串

javascript - 创建元素后运行回调