用于检查多个文件总大小的简单Javascript循环
如何将此代码实现为20个文件的循环?它们将具有id=“myFile1”、“myFile2”等用于检查多个文件总大小的简单Javascript循环,javascript,for-loop,dom-events,Javascript,For Loop,Dom Events,如何将此代码实现为20个文件的循环?它们将具有id=“myFile1”、“myFile2”等 var myFile=document.getElementById('myFile'); myFile.addEventListener('change',function()){ 警报(此.files[0].size); }); 我的第一个想法是编写20个脚本,但我并不认为这是一个好的解决方案,我更喜欢干净的代码 我试过这个。。。但由于某些原因,它不起作用-第二个文件报告“NaN”,而不是以字节
var myFile=document.getElementById('myFile');
myFile.addEventListener('change',function()){
警报(此.files[0].size);
});
我的第一个想法是编写20个脚本,但我并不认为这是一个好的解决方案,我更喜欢干净的代码
我试过这个。。。但由于某些原因,它不起作用-第二个文件报告“NaN”,而不是以字节为单位的文件大小
<script type="text/javascript">
var myFile = document.getElementById('myFile');
myFile.addEventListener('change', function() {
var totalSize = this.files[0].size;
alert(totalSize);
});
</script>
<script type="text/javascript">
var myFile1 = document.getElementById('myFile1');
myFile1.addEventListener('change', function() {
var totalSize = totalSize + this.files[0].size;
alert(totalSize);
});
</script>
var myFile=document.getElementById('myFile');
myFile.addEventListener('change',function()){
var totalSize=this.files[0].size;
警报(总大小);
});
var myFile1=document.getElementById('myFile1');
myFile1.addEventListener('change',function(){
var totalSize=totalSize+this.files[0].size;
警报(总大小);
});
我还想实现一个IF条件,仅当totalSize大于7mb时才会发出警报,这意味着我需要totalSize/(1024*1024)
——这很容易做到,但不是循环
你能帮我建立一个计算所有文件总大小的工作循环吗?myFile是
输入类型=“file”
元素的ID。尝试使用以下逻辑:
<script type="text/javascript">
var totalSize=0;
function checkSize() {
totalSize = totalSize + this.files[0].size;
alert(totalSize); //write logic to check size validation etc. here
}
for(var i=1;i<=20;i++)
{
var myFile = document.getElementById('myFile'+i);
myFile.addEventListener('change',checkSize);
}
</script>
var totalSize=0;
函数checkSize(){
totalSize=totalSize+this.files[0].size;
警报(totalSize);//在此处写入逻辑以检查大小验证等
}
对于(var i=1;i我不知道我是否正确理解了您的需求,但这可能是您的情况:
代码
var totArray = [];
for (var x = 1; x <= 5; x++) {
var currFile = document.getElementById("myFile"+x);
currFile.addEventListener('change', function(x){
totArray[this.id] = parseInt(document.getElementById(this.id).value); //here goes file.size
var currTot = 0;
for(var key in totArray){
currTot += totArray[key];
}
if(currTot > 10)
alert("file sizes > 10 MB");
});
}
var-totArray=[];
对于(变量x=1;x 10)
警报(“文件大小>10 MB”);
});
}
为了简单起见,我使用了一些文本输入,以显示循环如何将每个输入添加到同一事件中。要测试它,请输入一个整数,表示文件的大小,它应该可以工作
希望对您有所帮助,问候您谢谢。然而,这对我来说似乎太复杂了,即使它不是。SanjeevRai的解决方案更简单、更清晰。你能帮我纠正我的语法我的“警报”状态吗?警报(“您已超过最大文件大小上载限制。您的文件大小为:”+(totalSize/(1024*1024))+“MB。\n\n请删除上一个附件。”);我看不出这有什么不对。你有什么错?无论如何,如果用户从您的输入中删除一个文件,那么总大小应该会减小。。SanjeevRai的解决方案并没有涵盖这一案例。我们已经弄清楚了,它只是doble“而不是”在一开始。我的错。除此之外,我想我必须试试你的代码,它看起来不错!我试图编辑你的代码,但从parse这一行我看不懂。我想我必须写这个.fils[0]。在某个地方设置大小并在某个地方设置限制,但我看不到单位或类似的东西:/parseInt(…),而不是parseInt(…),应该在那里为文件大小设置整数val。限制在该语句中:“如果(currTot>10)”。10是提高警报的大小限制
var totArray = [];
for (var x = 1; x <= 5; x++) {
var currFile = document.getElementById("myFile"+x);
currFile.addEventListener('change', function(x){
totArray[this.id] = parseInt(document.getElementById(this.id).value); //here goes file.size
var currTot = 0;
for(var key in totArray){
currTot += totArray[key];
}
if(currTot > 10)
alert("file sizes > 10 MB");
});
}