Javascript在for循环之后无法正常工作

时间:2016-12-19 09:48:23

标签: javascript php jquery html

我已编写代码来上传已调整大小的照片。这是html表单:

<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:

$('#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);
});

但是for循环之后的代码没有被执行。对于照片数量的警报“for loop working”按预期显示,但不是“最终警报”。

请注意,照片大小调整会按预期进行,并且我在此处未包含一些脚本文件。但是控制台中没有错误。 我已经在chrome和firefox中运行了代码,两者都提供了相同的输出。

最后一件事是因为我在提交时运行此JavaScript,页面不会按预期转到aa.php

2 个答案:

答案 0 :(得分:4)

如果您的函数返回,它不会继续执行其余代码。看看这一行:

if (typeof files[i] !== 'object') return false;

这里返回整个函数,终止执行。请尝试使用continue语句,这将停止当前迭代并转到下一个。

答案 1 :(得分:1)

如果if (typeof files[i] !== 'object') return false;被触发,它将停止执行您的功能,这意味着alert('final alert');永远不会发生。