if语句中的Javascript函数即使不满足条件也会继续运行

Javascript function inside if statement still runs even though condition is not met

本文关键字:条件 不满足 运行 继续 语句 Javascript 函数 if      更新时间:2023-09-26

我试图使,当用户滚动到某一点(1250px从顶部),脚本将运行一个函数"只是一次",然后当用户滚动更多,直到另一个1250px从点之前(2500px从顶部),脚本将再次运行该函数一次。

然而,我的脚本在1250像素之后继续运行函数,我已经添加了另一个1250到var current_post,所以在这一点上,var current_post应该是2500,如果var偏移量是1600,函数不应该运行,但它继续运行。

Javascript

$(window).scroll(function() {
    var offset = $(window).scrollTop();
    var current_pos = 1250;
    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});

请帮我指出我的错误并纠正我对这个的理解。

问题是每次事件被触发时,您都将current_pos设置回1250。因此,您永远无法使用更新后的值。

尝试在事件处理程序之外设置current_pos变量,这样它就不会在每个事件中被重新分配到1250。

var current_pos = 1250;
$(window).scroll(function() {
    var offset = $(window).scrollTop();
    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});

var current_pos=1250置于scroll事件之外,如下所示:

var current_pos = 1250; //paste it here
$(window).scroll(function() {
    var offset = $(window).scrollTop();
    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});

输入变量:

var current_pos = 1250;
$(window).scroll(function() {
    var offset = $(window).scrollTop();
    console.log(offset);
    if(offset > current_pos) {
       current_pos += 1250;
        //do some function
        console.log(current_pos);
     }
 });
http://jsfiddle.net/sq32f7h8/