2017-02-24 11 views
0

私はJavaScriptを使った初心者で、APIを使って遊んでいますが、なぜfor行が終了した後でコードの行が実行されないのか分かりません。誰か助けてくれますか?ループの後でコードの一部の行が実行されないのはなぜですか?

function jsonFlickrApi(data) { 
    if (data.stat != 'ok') { 
     alert('no image loaded'); 
    } else { 
     for (var i = 0; i <= data.photos.photo.length; i++) { 
      addImage(data.photos.photo[i].url_o); 
      var lat = data.photos.photo[i].latitude; 
      var lon = data.photos.photo[i].longitude; 
      var LatLon = { 
       lat: parseFloat(lat), 
       lng: parseFloat(lon) 
      }; 

      var markers = new google.maps.Marker({ 
       'position': LatLon, 
       'map': map, 
      }); 

      console.log("i", i); 
      photoMarkers.push(markers); 
      //It still executes well here. 
     }; 
     //After the loop is finished, it doesn't print out anything to the console. 
     console.log("here"); 
    }; 
    //The following line doesn't execute too 
    fitMap(photoMarkers); 

} 

答えて

3

ループは終了せず、例外がスローされます。

 
Uncaught TypeError: Cannot read property 'url_o' of undefined 

配列のインデックスがlength-10ているので、あなたがあなたのforループが< data.photos.photo.length、ない<= data.photos.photo.lengthになりたい:詳細を参照するには、あなたのWebコンソールを開き、次のようなものを見つけることができます。 <=ループの最後の反復では、data.photos.photo[i]undefinedなので、data.photos.photo[i].url_oの値を取得しようとしています。

+1

ありがとう、それは私に多くの助けになります:) –

関連する問題