输入类型=文件多个,删除项目

input type=file multiple, delete items

本文关键字:删除项目 文件 类型 输入      更新时间:2023-09-26

html:

<input accept="image/*" class="" id="my_pics" multiple="multiple" name="pics" required="true" type="file" />

.js:

var files = document.getElementById('my_pics').files;
files.splice(1,2)
//TypeError: Object #<FileList> has no method 'splice'
delete files.item(2)
// true, but nothing happens with "2"
delete files[2]
// false, result is the same

有一个包含多个文件的表单,我只需要在一次输入中在服务器上上传有限数量的图像(例如 5 张),但我的代码不起作用。

如何解决?谢谢。

您无法

删除它,因为它是FileList对象中指向的File对象,因此会出现上述错误。但是,您可以循环访问FileList,并且只将所需的项推送到数组上,然后可以修改该数组:

var files = document.getElementById('my_pics').files;
var newList = [];
for(var i = 0; i < files.length; i++)
{
    if(i !== 2)
    {
        newList.push(files.item(i));
    }
}

从这个答案中可以看出,您无法delete实际对象。只能删除对对象的引用。因此,即使它适用于FileList对象(它不起作用),它也只会将该元素设置为等于 undefined .