我使用以下关于如何使用文件输入控件和文件API读取多个文件的示例:http://www.htmlgoodies.com/beyond/javascript/read-text-files-using-the-javascript-filereader.html#fbid=ZtHD9f5RFBF。
问题是for循环如何知道何时停止?似乎没有逻辑条件将在每次迭代时进行测试,只有文件变量的赋值。变量i递增但它如何影响循环的终止?
我还是Javascript的新手。
<input type="file" id="fileinput" multiple />
<script type="text/javascript">
function readMultipleFiles(evt) {
//Retrieve all the files from the FileList object
var files = evt.target.files;
if (files) {
for (var i=0, f; f=files[i]; i++) {
var r = new FileReader();
r.onload = (function(f) {
return function(e) {
var contents = e.target.result;
alert( "Got the file.n"
+"name: " + f.name + "n"
+"type: " + f.type + "n"
+"size: " + f.size + " bytesn"
+ "starts with: " + contents.substr(1, contents.indexOf("n"))
);
};
})(f);
r.readAsText(f);
}
} else {
alert("Failed to load files");
}
}
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);
</script>
答案 0 :(得分:2)
当files[i]
为undefined/null
时,它会停止。
例如
var a = [2,3]
for (var i = 0, f; f=a[i]; i++) {
console.log(f);
};
第一次a [i]将为2,它将打印2
第二次a [i]将为3,它将打印3
第三次[i]将返回undefined/null
,因此表达式f=a[i]
会给出结果undefined
并且它会停止。