tried尝试通过将输入文件分配到变量中来尝试:
var files = document.getElementById("upload").files;
但是同样是用这个赋值创建的连接,所以每当输入改变变量从它自己的变化。 那么如果没有这种联系我怎么能这样做呢?
答案 0 :(得分:2)
你只想要文件名?然后只需获取文件名:
var files = [],
upload = document.getElementById("upload");
upload.onchange = function() {
for (var i=0;i<upload.files.length;i++) {
files.push(upload.files[i].fileName);
}
}
??? FileList
没有“继承”行为,但我认为我误解了。
答案 1 :(得分:1)
那是因为它被用作对files属性的引用。如果您不知道这意味着什么,请在Google上进行一些阅读,以“按值传递,然后按参考传递。”
不幸的是,复制值需要做的是:
var files = (function() { return document.getElementById("upload").files; })();
为了复制该值而不引用.files
属性。
这里发生的简单回答是var files
引用该DOM元素的files
属性的内存地址。它看起来像你正在复制值,而实际上它指向那个内存插槽并访问它只是跟踪存储在那里并访问它的任何内容。
答案 2 :(得分:1)
我已经修改了@ Mike的答案,并得出了实际可行的结果。我正在为单个文件编写答案,可以将其转换为支持多个文件。
var file = document.getElementById("upload").files[0]
这将存储文件而不是文件的引用,因此如果upload
文件类型的值更改,文件中的值保持不变。
希望这可能有助于其他人