2016-09-25 6 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] 
    .... 
    } 

を私はしてもファイルリストの長さが0よりも大きいことを確認するためにチェックする必要がありますが、

Cannot read property '0' of undefined 

を取得私がこれをするとき:

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'をチェックしています。この問題に不可欠な 'photImage'がどこに定義されているのかわからないのですが、エラーメッセージを考えれば、空のリストではなく長さをチェックする必要があります。 –

+0

@DavidHedlund photoImageはタイプミスで、いずれの場合でも、変数をより一貫して聞こえるように名前を変更する必要があります。ありがとう! – lost9123193

答えて

2

最初の要素の長さを確認していますが、最初の要素はありません。使用:

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

'photo_id &&'は冗長で、OPが理解できないコードだけです。 – idmean

+0

@idmeanは簡単に編集されました – eavidan

+0

右、感謝します、ありがとう! – lost9123193

関連する問題