2016-02-28 107 views
-1

嘗試更改jQuery中的滾動值。更改全局變量值jQuery

var a= 10; 
$(window).scroll(function() { 
    a= $(this).scrollTop(); 
}); 

console.log(a); 

這裏是提琴:https://jsfiddle.net/jpb2rfxa/

儘管如此控制檯顯示10.如何改變價值?

+1

滾動頁面後直接在控制檯中打印「a」。 –

+0

它的滾動功能,但我需要滾動值外部功能 – nikolas

+0

它會改變。您在設置後直接輸出a的值。這就是爲什麼它是10.如果您要設置超時並在此時滾動,它將會改變。每個使用這個全局值的函數都是一樣的。 'a'會有新值 – Fuzzyma

回答

0

我明白你想要什麼,但我不明白你爲什麼不明白你的代碼是幹什麼的。

var a = 10; 
$(window).scroll(function() { 
    var a = $(this).scrollTop(); 
    console.log(a); 
}); 

該代碼將改變的一個值在每個滾動,輸出在每個滾動事件該值。 console.log將因此在每個滾動中發生。

var a = 10; 
$(window).scroll(function() { 
    a = $(this).scrollTop(); 
}); 

console.log(a); 

在這段代碼中,a仍然會在每個滾動條上發生變化。但是,console.log只會被調用一次,即第一次讀取文件 - 不會發生任何滾動。這是因爲.scroll是一個事件處理程序,只有當事件發生時纔會觸發(在本例中爲滾動)。因此,首先console.log會發生(僅一次),並且由於用戶尚未滾動,值將爲10.如果用戶隨後滾動,值將會更改,但console.log不會再被調用,所以您在控制檯中看不到新的值(即使已更改!)。

我假設你想在函數每次改變時使用a的值,但如果是這樣的話,這不是辦法。然後您需要在滾動事件中調用該函數,因爲您希望每次都使用新值調用該函數。

var a = 10; 
$(window).scroll(function() { 
    var a = $(this).scrollTop(); 
    logging(a); 
}); 

function logging(val) { 
    console.log(val); 
} 
+0

謝謝。你明白我的意思了,我明白了。再次感謝 – nikolas

0

在Javscript或jquery中,變量的作用域是可以運行的......我在window.scroll函數中獲得的變量'a'正在更新,但是當用戶實際上滾動了已經附加它的元素時至。並且您正在打印以記錄相同的原始值。

如果在scroll函數中移動console.log,您可能會看到您期望的結果..並且它會在您執行滾動事件時在控制檯中進行打印。

var a= 10; 
$(window).scroll(function() { 
a= $(this).scrollTop(); 
console.log(a); 
}); 
+0

我需要滾動功能以外的值。 – nikolas

+0

是的,您將可以訪問滾動功能之外的值。但是,變量a的值不會改變,除非您在附加的標籤上執行滾動。 – damitj07

+0

需要改變的值而不是先前分配的值 – nikolas