6

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 个),但我的代码不起作用。

如何解决?谢谢。

4

1 回答 1

5

您不能删除它,因为它是File对象中指向的FileList对象,因此出现上述错误。但是,您可以迭代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.

于 2013-10-29T18:23:26.163 回答