Javascript变量在onload函数内部未更改 [英] Javascript variable not changing inside onload function
本文介绍了Javascript变量在onload函数内部未更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
此代码始终使我在警报中返回"3".
this code always return me '3' in alert.
我一起选择了两个文件(一个为.mp4
格式,第二个为.zip
格式)
I select two files together (ones .mp4
format and second ones .zip
format)
function readFile(input) {
var counter = input.files.length;
for(x = 0; x<counter; x++){
if (input.files && input.files[x]) {
var extension = input.files[x].name.split('.').pop().toLowerCase();
var reader = new FileReader();
reader.onload = function (e) {
urlss = 1;
if(extension == 'mp4'){
urlss = 2;
}else{
urlss = 3;
}
alert(urlss);
};
reader.readAsDataURL(input.files[x]);
}
}
}
<input type="file" id="files" name="files[]" accept=".png, .jpg, .jpeg, .zip, .mp4" onchange="readFile(this);" multiple />
推荐答案
那是因为 for结束且扩展名== last file extension
The onload
function calling after the for was ended and extension == last file extension
尝试用const替换var:
Try replace var with const:
function readFile(input) {
var counter = input.files.length;
for(let x = 0; x < counter; x++){
if (input.files && input.files[x]) {
const extension = input.files[x].name.split('.').pop().toLowerCase();
const reader = new FileReader();
reader.onload = function (e) {
urlss = 1;
if(extension == 'mp4'){
urlss = 2;
}else{
urlss = 3;
}
alert(urlss);
};
reader.readAsDataURL(input.files[x]);
}
}
}
更新
请在下面查看韦伯的评论.
Please check the Webber's comment below.
这篇关于Javascript变量在onload函数内部未更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文