即使条件不满足,如果语句仍然运行,Javascript函数内部

时间:2015-08-10 09:53:38

标签: javascript jquery

我试图在用户滚动到某一点(距离顶部1250px)时,脚本将运行一个函数“只是ONCE”,然后当用户滚动更多直到另一个1250px之前(2500px)从顶部开始,脚本将再次运行该函数。

然而,我的脚本在1250 px之后继续运行该函数,我已经将另外1250添加到var current_post,所以此时,var current_post应为2500,如果var offset为1600,则该函数不应运行,但它一直在运行。

的Javascript

$(window).scroll(function() {
    var offset = $(window).scrollTop();
    var current_pos = 1250;

    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});

请帮助我发现我的错误并纠正我对此的理解......请提前。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

问题在于,每次触发事件时,您都将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
   }
});

答案 2 :(得分:0)

只需输出变量:

// assuming commonJS but it can also be used in the browser directly
var Hook = require('./Hook');
var hook = new Hook();

var socket = io.connect("http://myServer.com");


hook
        .attach(socket)
        .bindSocket(socket) // enables 'send(message, data)' instead of 'sendTo(socket, message, data)' and 'sendHello' instead of 'sendHelloTo'
        .sendHello({token: '123456789abcdefg'})
        .then(function (message) {
            console.log("Successful hello", message);

            hook
                    .send('myEvent', {payload: '123'})
                    .then(function (message) {
                        console.log("Successful hook", message);
                    })
                    .catch(function (err) {
                        console.log("failed  hook", err);
                    });

        })
        .catch(function (err) {
            if (err === hook.TIMEOUT) {
                // timeout
            }
            else {
                console.log("hello failed", err);
            }

        });

http://jsfiddle.net/sq32f7h8/