我似乎無法使用jQuery點擊函數中定義的變量。我知道全局變量和局部變量之間的區別,但在函數之外創建變量似乎沒有幫助。如何訪問定義函數之外的變量?
var $genre;
$('#search').click(function() {
$genre = $(this).attr('value');
});
console.log($genre);
必須有一些簡單的解決方案,我只是沒有想到。
我似乎無法使用jQuery點擊函數中定義的變量。我知道全局變量和局部變量之間的區別,但在函數之外創建變量似乎沒有幫助。如何訪問定義函數之外的變量?
var $genre;
$('#search').click(function() {
$genre = $(this).attr('value');
});
console.log($genre);
必須有一些簡單的解決方案,我只是沒有想到。
只有2 JS值範圍:功能和全球
意思就是說值是。點擊回調內,將只存在被點擊之後。 Undefined實際上是JS中的一個類型,意味着該變量存在但尚未賦值。
我懷疑是你認爲的代碼將同步執行,但是當...點擊
是的,記錄變量UNTIL被點擊...你會看到值 –
「JS中只有2個值範圍:函數和全局」,錯誤。還有一個塊範圍。 https://gist.github.com/StephanBijzitter/5dc3d2b0dd8ce959727b6184d8278875 –
Noup,let關鍵字可以解決JS中從未有過塊範圍這一事實。它也僅在EC6中實施。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let - 很多原因IIFE在那裏用作事實上的塊替代多年...... –
要指定click事件的「價值」功能點擊纔會被調用。因此,只有當您點擊「#搜索」時纔會分配該值。所以console.log語句不會有任何價值。
請嘗試此操作。
var $genre;
$('#search').click(function() {
$genre = $(this).attr('value');
console.log($genre);
});
使我提到的這兩個更改的代碼如下所示!
var $genre;
$('#search').click(function() {
//sets the variable to the value of the input
$genre = $(this).val();
//prints the variable to the console everytime that the element is clicked
console.log($genre);
});
好,因爲它是在一個點擊事件被設置,它不會,直到你... –
是否使用'內的另一個功能/處理器console.log'觸發click事件有一個值?因爲你現在這樣做的意思是''''''''''''''''''''當點擊處理程序被觸發時' – Bobface
它只會打印'undefined' –