1

ページに複数のファイル入力があります。これらは一意に定義されており、これには multiple 属性を使用できません。このフォームを送信すると、スクリプトが実行され、各アップロード要素の null 値がチェックされます。

ユーザーに素敵なビジュアル フィードバックを提供する小さなステータス ローダーを作成しました。やりたいことの一部として、アップロードの合計サイズを表示します。残念ながら、私が書いたのは DOM 要素を対象としており、DOM 要素が参照している実際のファイルではありません。API ドキュメントとこれを読みましたが、ここに何かが欠けています。

jQuery( "#submit" ).on("click", function(event) {

    var inputs = document.getElementsByTagName('input'),
        files = [],
        size;

    for(i=0; i<inputs.length; i++) {
        if( inputs[i].getAttribute('type') == "file" && inputs[i].value != 0 ) {
            files.push(inputs[i].id);       
            }
        }

    for(j=0; j<files.length; j++) {
        size += document.getElementById(files[j]).size;
        }

    console.log(size); //returns NAN

//other stuff
});

ありがとう

4

1 に答える 1

3

私はあなたができるとは思わない: document.getElementById(files[j]).size.sizeプロパティはそこに存在しません。

document.getElementById(files[j]).files代わりにから読んでみてください。

次のようなことができます:document.getElementById(files[j]).files[0].size

あるかないかは関係ないと思いますmultiple="multiple"

コードにバグがあることに注意してください。sizeisundefinedundefined + 1234isの初期値NaN(Not a Number)

于 2013-06-26T10:56:00.910 に答える