![](/img/trans.png)
[英]How put PHP and HTML code iike text inside javascript var. (innerHTML)?
[英]Javascript: How to make this var. work globally
我有一個與此變量有關的問題,不想在函數外部工作,我只是不明白為什么! 這是代碼:
globalData = new Array();
//
// Colors
//
if ( settings.category == 'colors' ) {
$.getJSON(colorLoversURL, function(data) {
for ( var i in data ) {
var localData = data[i].hex;
globalData.push(localData);
}
});
}
//
// Palettes
//
else if ( settings.category == 'palettes' ) {
$.getJSON(colorLoversURL, function(data) {
for ( var i in data ) {
var localData = new Array();
for ( var j in data[i].colors ) {
localData.push(data[i].colors[j]);
}
globalData.push(localData);
}
});
}
現在的事情是,globalData僅在我需要時將值保留在getJSON函數內和該函數之外,它只是空白(我在警報窗口中測試了這些值)。 我還嘗試過在代碼的前面和后面使用“ var”。 這里有什么問題嗎?
您何時檢查globalData?
兩次對getJSON的調用都使用回調操作globalData,因此在檢查globalData之前可能尚未調用該函數。 不要忘記您在那里使用異步javascript。
如果是這種情況,我建議使用函數鏈接
function useGlobalData() {
alert(globalData);
//do other stuff
}
//
// Palettes
//
$.getJSON(colorLoversURL, function(data) {
for ( var i in data ) {
var localData = new Array();
for ( var j in data[i].colors ) {
localData.push(data[i].colors[j]);
}
globalData.push(localData);
useGlobalData();
}
});
如果在您的.js
文件中,則第一行必須是var globalData = new Array();
或者如果它在<script type="text/javascript">...</script>
那么您的下一行將是
var globalData = new Array();
例如
<script type="text/javascript">
var globalData = new Array();
//Rest of JS code...
function whatever() {
}
</script>
然后globalData變為全局。
這應該工作。 代碼是否有可能以某種方式運行兩次,從而導致globalData
重置回空數組?
您在javascript閉包內部進行操作,在閉包內部您具有不同的作用域。
這意味着您只能訪問范圍內定義的內容。
簡單地說x = something()不會創建全局變量(可以從所有作用域訪問的變量)。
為此,您需要做var x = something();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.