1

How can I write the code below as a jquery:

var imagefile = document.getElementsByClassName("fileImage");
var filename = imagefile.files[0];

I attempted this below but it says it is not defined even though I have already stated file input's class is 'fileImage'.

var filename = $('.fileImage').files[0];
4

3 回答 3

4

你不能直接这样imagefile.files[0]

document.getElementsByClassName("fileImage")
//and
$('.fileImage')

返回一个“类似数组”的项目列表。(AFAIK,getElementsBy*函数,除了getElementsById,返回 a NodeList

在获得files[0].

对于纯 JS 方法:

for(var i=0; i < imagefile.length;i++){
    var imgfile = imagefile[i];

    //now imgfile is the DOM element itself
    imgfile.files[0];
}

对于 jQuery,你链接.each()

$('.fileImage').each(function(){

   //"this" in here is the DOM element

   this.files[0];

})
于 2012-04-19T02:16:32.750 回答
3

$() 函数返回的 jQuery 对象没有 .files 属性——该属性属于 DOM 元素。尝试这个:

var filename = $('.fileImage')[0].files[0];

如果没有元素匹配选择器,这仍然会出错,否则它使用 jQuery 对象上的方括号数组语法来获取对第一个匹配元素的引用。

如果要测试是否有任何元素与选择器匹配,请使用 jQuery objects .length 属性:

var $files = $('.fileImage'),
    filename;
if ($files.length > 0) {
   filename = $files[0].files[0];
   // do something with filename...
}
于 2012-04-19T02:20:47.253 回答
1

因为.files[]不是 jQuery 的一部分。

于 2012-04-19T02:15:56.650 回答