1

jqueryセレクターを使用してファイルを変数として定義すると、次のエラーが発生します:Uncaught TypeError:Array.prototype.mapがnullまたはundefinedで呼び出されました。私が使用する場合:

var file = document.getElementById('file'); 

それ以外の

var file = $('#file').val();

その後は機能しますが、jqueryセレクターの使用が機能しない理由に興味があります。ありがとう

$('#file').on('change', function(){

  var file = $('#file').val();
      var sizes = [].map.call(file.files, function(v) {return v.size;});
      var totalSize = sizes.reduce(function(a, b) {return a + b;}, 0);
 });
4

2 に答える 2

2

val選択したファイルの名前を返します。オブジェクトfilesのプロパティを使用する必要があります。InputElement

$('#file').on('change', function(){
    var size = 0;
    $.each(this.files, function(i, v){
       size += v.size
    })
 });

filesIEブラウザはプロパティをサポートしていないことに注意してください。

于 2013-02-19T17:42:45.073 に答える
2

jqueryセレクター$("#element")は、実際のdom要素ではなくjqueryオブジェクトを返します。

これを自分でテストするには、ChromeまたはFirebugでコンソールを開き、jqueryで要素を選択します。

また$('file').val()、value属性を持つdom要素の値を返す関数でもあります。

jqueryを使用して選択したいが、jqueryオブジェクトではなくdom要素を操作する必要がある場合は、次のようにする必要があります。

var file = $('#file')[0]; 

これは、jqueryオブジェクトからdomノードを取得します。

于 2013-02-19T17:43:29.520 に答える