2015-05-07 41 views
1

我有一些代碼,我想要做的是觸發與滾動一個功能,應該變量值與setTimeout的改變

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/

+1

這聽起來像在代碼中的邏輯錯誤。 – Regent

回答

3

你需要把if聲明您的視窗scroll事件處理程序:

$(window).scroll(function() { 
    if (flg == 0) { 
     clearTimeout(timer); 
     ... 
    } 
}); 

當覆蓋您的初始值flg時,您還需要刪除關鍵字var,否則它不會影響全局值,而是會創建一個新的局部變量。

JSFiddle demo

0

您的if需要在滾動功能中。 它現在設置的方式是在分配回調時檢查flg的值。相反,它應該檢查它需要:

$(window).scroll(function abc() { 
    if (flg === 0) { 
     clearTimeout(timer); 
     flg = 1; 
     console.log(flg + 'srsc'); 
    } 
}); 

更新小提琴:https://jsfiddle.net/9dwyjrnh/