2015-05-29 80 views
-1

我有一段JS代碼在循環:方法返回undefined

window.gamesParse = { 
    days: days, 
    dates: dates, 
    times: times, 
    series: series, 
    homes: homes, 
    aways: aways, 
    channels: channels 
} 

var image = $.get("assets/images/" + gamesParse.aways[i] + ".png"); 
if (image.status !== 404) { 
    console.dir(image); 
} else { 
    console.dir(image); 
} 

現在,它返回一個具有status財產的權利對象。但是,如果我將image更改爲image.status(或任何其他屬性或方法),則它將返回undefined。
這是正常的嗎?我如何從那裏訪問status財產?

+0

它沒關係!那麼問題是什麼?你想要任何答案嗎?它是未定義的,因爲狀態屬性不可用。 – Jai

+0

@Jai我認爲未定義的情況並不是預期的。問題編輯。 –

+0

新手錯誤。 Javascript是_asynchronous_。在測試'image.status'之前,您必須等待'get'函數完成並返回結果。使用回調函數。 '.get(「png」,function(image){console.log(image);})' –

回答

1

這是很正常的,因爲$.get是異步的,它在這個當前代碼中意味着它加載數據的。但是在下一行中,您會詢問圖像的狀態,實際上圖像的狀態仍在加載。你需要做的是等待圖像加載,然後檢查代碼。例如:

$.get("assets/images/" + gamesParse.aways[i] + ".png", function(image) { 
    // here image can have status 
}); 
0

image是未定義的,因爲它不在get動作中,請嘗試將其放入回調函數中。就像這樣:

$.get("assets/images/" + gamesParse.aways[i] + ".png", function(response) { 
    if (response.status !== 404) { 
     // do stuff here 
    } else { 
     // or here 
    } 
}); 

檢查docs