2016-09-25 69 views
0

我在解決這個問題時遇到了一些問題。在Javascript中訪問未定義的值

用戶可以將圖像上傳到我的表單中名爲photo_id的變量。我將photo_id中的第一個文件對象發送到數據庫以創建一個文件對象。

if (photo_id) { 
    var file=photo_id[0] 
    //send to database and set id to new object created 
    } 

但是,有時用戶將單擊文件上傳按鈕,但不會添加文件。一個fileList對象仍然被製作並放入photo_id變量中,但它的長度爲0,這使得它不確定。

enter image description here

在這種情況下,當我運行此:

if (photo_id) { 
    var file=photo_id[0] 
    .... 
    } 

我得到

Cannot read property '0' of undefined 

我需要檢查,以確保文件清單長度大於0但即使當我這樣做:

if (photo_id[0].length >0) { 
    var file=photo_id[0] 
    //send to database and set id to new object created 
    } 

我得到的錯誤:

cannot read length of undefined 

我如何檢查這兩種情況在文件清單存在,它的長度爲> 0?

+0

當您檢查'photoImage'時,您正在檢查'photo_id'。你沒有向我們展示'photoImage'的定義,這對於這個問題是很重要的,但是鑑於你的錯誤信息,它不是一個空的列表,你應該檢查長度,但沒有定義,你應該檢查。 –

+0

@DavidHedlund photoImage是一個拼寫錯誤,無論如何,我需要更改名稱以使變量聽起來更連貫。謝謝! – lost9123193

回答

2

您正在檢查第一個元素的長度,但沒有第一個元素。使用:

if (photo_id && photo_id.length > 0) {...} 
+0

'photo_id &&'是多餘的,只是OP可能無法理解的更多代碼。 – idmean

+0

@idmean編輯使其更簡單 – eavidan

+0

正確,這是有道理的,謝謝! – lost9123193