2017-06-19 143 views
0

我對這個論壇和jquery都比較陌生。因此,如果我的問題是錯誤的,請不要標記negetive incase。在jquery範圍之外的alert變量

我曾試圖搜索,但仍然無法爲我的問題得到適當的解決方案。

我正在使用更改函數來獲取更新的輸入值,如下所示,它工作得很好。我也能夠通過下面提到的範圍內的更新值來提醒變量。

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
    var myVar = $(this).val(); 
    alert(myVar); 
    }); 
}); 

現在我想提醒的下方未工作範圍以外的變量爲MyVar,我對如何給這個變量叫出定範圍的不知道。請幫忙。

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
    var myVar = $(this).val(); 
    }); 
    alert(myVar); 
}); 
+0

嘗試加入'VAR myVar的=「」;'準備(功能之後'(){' –

+0

我已經發布了這個問題之前嘗試過這一點,但它不工作,就可以在張貼幫助。解決方法是JSfiddle?它會幫助我很多 –

回答

0

如果試圖範圍之外的提醒這一點,它會來的空白,因爲它會在頁面加載時被觸發

相反,我認爲你要調用它的一些事件監聽器裏的,這就是爲什麼你試圖將其分配給一個變量外面

$(document).ready(function(){ 
    var myVar = ''; 
    $("#tags").keyup(function() { 
     myVar = $(this).val(); 
     alert(myVar); 
    }); 

    //or another event listener { 
     alert(myVar); 
    }); 
}); 
+0

那麼如何在另一個事件列表器中調用?你能否提供更新的代碼? –

+0

th取決於你何時想要提醒值 – Saksham

+0

更改後的值需要在JSON輸出的API url中更新。除非我們在沒有頁面刷新的情況下自動獲取更改值,否則將無法實現。爲了使用url中的更改值進行更新,我需要將範圍外的更改值用於其他函數或事件偵聽器中。 –

0

你需要在一些地方保存myVar中可以通過調用alert函數讀取的範圍。大錘的做法是把myVar在全球範圍內,像這樣:

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
     myVar = $(this).val(); //notice no var keyword 
    }); 
}); 

當使用的變量,而不與var宣佈,它在全球scope--技術上結束了,它會成爲當前窗口的屬性。如果你想成爲你的明確可以寫爲

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
     window.myVar = $(this).val(); //notice no var keyword 
    }); 
}); 

現在一般來說你應該避免全局範圍的變量,因爲你永遠不知道誰的變量,你可能會踩在腳下,例如如果它與另一個變量具有相同的名稱。所以更好的解決方案將把變量放在closure中。這看起來如何取決於您聲明alert的功能的確切位置。

假設您想要引入新的全局函數ShowAlert。您可以使用一個共同的變量,這將推動可變出的局部範圍爲封閉在同一個代碼塊中定義這個,像這樣:

$(document).ready(function(){ 
    var myVar; //We use the var keyword to declare this in local scope, for now 

    $("#tags").on("keyup", function() { 
     myVar = $(this).val(); 
    }); 

    ShowAlert = function() { 
     alert(myVar); //Using myVar here forces it into a closure, which will persist even after document.ready has exited 
    } 
}); 

然後,使用的myVar最新值顯示警報,只需使用:

ShowAlert(); 
+0

但是,window.myVar將如何返回範圍之外的值?請解釋 –

+0

因爲'window.myVar'存儲在本地範圍和全局範圍之外。它可以通過窗口中任何地方的代碼訪問。話雖如此,一個全局變量並不理想,所以請張貼需要使用*'myVar'的代碼,我可以告訴你如何訪問它。 –

+0

@John Wu:我想將更改的值連接到JSON輸出的url。示例:https://example.com/suggest?label=changed_input_values&City=NY&f=pjson –