在我的HTML中,我选择了多个文件。
<input type="file" id="img" multiple>
我想将每个元素存储在一个数组中,以便我可以打印文件源。
我已经在我的javascript中完成了这项工作,但它不起作用。
function loadfiles()
{
var x=document.getElementById("img");
for (var i=0;i<x.length;i++)
{
document.write(x.elements[i].src);
}
}
答案 0 :(得分:6)
属性files
为您提供文件输入选择的所有文件的数组。因此,应将loadfiles函数修改为以下内容:
function loadfiles()
{
var imageFiles = document.getElementById("img"),
filesLength = imageFiles.files.length;
for (var i = 0; i < filesLength; i++) {
document.write(imageFiles.files[i].name);
}
}
答案 1 :(得分:2)
DOM文档(Mozilla):
element = document.getElementById(id);
,其中
element
是对Element对象的引用,如果具有指定ID的元素不在文档中,则为null。id
是一个区分大小写的字符串,表示要搜索的元素的唯一ID。
在您的代码document.getElementById(id)
中返回单个元素而不是列表
要访问添加到输入的文件,请查看HTML5 Files API。
var f = (document.getElementById('img').files);
for (var i =0; i < f.length; i++){
var new_div = document.createElement('div');
new_div.innerHTML = f[i].name;
document.body.appendChild(new_div);
}
仅供参考:使用document.write()
非常危险,应该避免。如需了解更多信息,请参阅此stackoverflow问答:Why is document.write considered a "bad practice"?
在上面的示例中,我将document.write
替换为document.body.appendChild
小提琴(使用jQuery):http://jsfiddle.net/4Yq4F/
这是在您的响应中请求文件的完整文件路径。不幸的是,由于安全原因,目前不可能。但是,Mozilla Firefox浏览器将为您提供具有mozFullPath
属性的完整文件路径。如果您要使用它,请在上面的示例中将f[i].name
替换为f[i].mozFullPath
答案 2 :(得分:1)
这对你有用......
function loadfiles()
{
var x=document.getElementsByTagName("input");
for (var i=0;i<x.length;i++)
{
if(x[i].type == "file"){
document.write(x[i].value);
}
}
}
答案 3 :(得分:0)
此代码适用于您。
HTML 的
<input type="text" id="text"/>
<input type="button" value="add" id="adda"/>
的JavaScript
var arry=[];
$("#adda").click(function(){
arry.push( $("#text").val());
alert(arry);
});
答案 4 :(得分:0)
var fileArray = new Array();
$('#inputPostFile').change(function() {
var files = this.files;
$('.uploadedFileList').html('');
$.each(files, function (index, value) {
fileArray.push(value);
});
});