2016-12-19 6 views
1

サイズ変更された写真をアップロードするコードを書いています。ここではそのためのHTMLフォームは次のとおりです。forループの後にJavascriptが動作しない

$('#uploadImageForm').on('submit', function(e){ 
    e.preventDefault(); 
    var ds = []; 
    var files = document.getElementById("fileToUploadId").files; 
    for (var i in files) { 

      if (typeof files[i] !== 'object') return false; 
      resize.photo(files[i], 1200, 'file', function (resizedFile) { 

       var resizedSize = resizedFile.size; 
       ds.push(resizedFile); 
      }); 
      alert('for loop working'); //getting executed for each itteration 
    } 

    alert('final alert'); //not getting executed 
    console.log(ds); 
}); 

しかし、コードのループが実行されません後:

<form action="aa.php" method="post" id="uploadImageForm" enctype="multipart/form-data"> 
     <input type="file" id="fileToUploadId" name="fileToUpload[]" accept="image/jpeg, image/png" multiple /> 
     <input type="submit" value="Upload Image" name="submit"> 
</form> 

では、私はこのJavaScriptを実行しているよ提出します。写真の枚数のための 'for loop working'という警告は期待通りに表示されますが、「最終警告」は表示されません。

ここでは写真のサイズ変更が予想どおりに行われていることに注意してください。ここには含まれていないスクリプトファイルがあります。ただし、コンソールにエラーはありません。 私はchromeとfirefoxでコードを実行しており、両方とも同じ出力を与えています。

私はこのJavaScriptを送信しているので、最後に1つは、期待通りにaa.phpには行きません。

+4

あなたは 'return'を使用しています。 'continue'を使います – Rajesh

+1

jquery' $ .each'を実行した場合は 'return'を使います。' for'のjavascriptなので、 'continue'で次の項目にスキップします。 –

+1

または、 'if'条件を反転し、' return'や 'continue'を使わないでください。 –

答えて

4

関数が返っても、コードの残りの部分の実行を続行しません。

ここでは、関数全体が返され、関数の実行が終了します。代わりにcontinueステートメントを使用してください。これは、現在の反復を停止し、次のステートメントに進みます。

1

if (typeof files[i] !== 'object') return false;がトリガされると、ファンクションの実行が停止します。つまり、alert('final alert');は発生しません。

関連する問題