我有一个数组。我正在做的是当用户单击“上传”按钮时
<input type="files[]" name="file" multiple
。因此,我允许用户删除已经添加的文件。
var arr = [];
var filteredAry = [];
var k = 0;
var fileupload_step3 = document.getElementById("FileUploadStep3");
$('.upload_3').on('click',function(){
$('.alert_text_step3').html('');
fileupload_step3.click();
});
fileupload_step3.onchange = function () {
var total_files = document.getElementById("FileUploadStep3").files.length
var imageName = '';
if(filteredAry.length > 0)
{
k = filteredAry.length;
console.log(`length: ${k}`);
console.log(`${total_files}`);
for(i = k ; i<=total_files; i++)
{
console.log(i);
imageName = $('#FileUploadStep3')[0].files[i].name;
arr.push($('#FileUploadStep3')[0].files[i]);
$('.file_up_3').append(`<li class="remove-id-${i}"><span class="remove-file remove-file-3 btn f-20 mr-2" data-3-id="${i}">X</span> <span>${imageName}</span></li>`);
}
}
else
{
for(i = k ; i<total_files; i++)
{
imageName = $('#FileUploadStep3')[0].files[i].name;
arr.push($('#FileUploadStep3')[0].files[i]);
$('.file_up_3').append(`<li class="remove-id-${i}"><span class="remove-file remove-file-3 btn f-20 mr-2" data-3-id="${i}">X</span> <span>${imageName}</span></li>`);
}
}
}
$(document).on('click','.remove-file-3',function(){
var seleced = $(this).attr('data-3-id');
$(`.remove-id-${seleced}`).remove();
filteredAry = arr.filter(function(e) { return e !== arr[seleced] })
arr = filteredAry
console.log(filteredAry);
});
我所做的是,当用户上传文件时,它进入一个数组。当用户单击“删除”时,它将删除该特定文件而保留在其他文件后面。一切正常,但是假设用户最初选择了三个文件并删除了其中一个,然后将这两个保留了下来。现在,如果他再次单击上传按钮。然后,我试图在数组中添加下一个索引。
就像是否有[file1,file2]
一样,我希望file3在那里并且索引为2。但是,这没有发生。如果我离开i=0
,那么如果用户删除了.remove-id-${seleced}
,它将把remove-id-0
添加为remove-id-2
。在这里做什么?