2012-04-19 91 views
1

我怎麼能寫出下面的代碼作爲一個jQuery:如何在jquery下面編寫代碼?

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

我嘗試這下面,但它說,即使我已經說過文件輸入的類別是fileImage「沒有定義。

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

發表您的HTML。 – DG3 2012-04-19 02:11:59

+1

$('。fileImage')是一個數組 – 2012-04-19 02:14:29

+2

@dan_l:在技術上類似於數組。 – josh3736 2012-04-19 02:16:21

回答

4

你不能直接做imagefile.files[0]因爲

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

回報項目「陣列式」列表中。 (據我所知,getElementsBy*功能,除了getElementsById,返回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]; 

}) 
3

由$返回的jQuery對象()函數沒有一個.files屬性 - 該屬性屬於DOM元素。嘗試:

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

這仍然會給出錯誤,如果沒有元件選擇器匹配,否則它使用jQuery對象上的方括號數組語法去的第一匹配元素的引用。

如果你想測試,如果任何元素匹配選擇使用jQuery的對象。長度屬性:

var $files = $('.fileImage'), 
    filename; 
if ($files.length > 0) { 
    filename = $files[0].files[0]; 
    // do something with filename... 
}