1

次のスクリプトで問題が発生しています: ユーザーがアップロード ボタンをクリックし、いくつかの画像を選択するdivsと、作成され、画像ごとに 1 つ追加されます。

tbaただし、関数から変数を取得することはできません。私はこの質問がすでに数回尋ねられていることを知っており、さまざまなアプローチ(reader.onload関数内を含む...)を試しましたが、その変数を正常に取得できませんでした。

<script type="text/javascript">
 $(document).ready(function() {
     function readURL(input) {      
        if (input.files) {
            var tba = '';
            for (var i = 0; i < input.files.length; i++) {
                if(input.files[i]) {

                    var reader = new FileReader();

                    reader.onload = function (e) {
                            tba += '<div class="gallery_image"><img src="'+e.target.result+'" alt="Image currently not accessible" /></div>';
                    };

                    reader.readAsDataURL(input.files[i]);
                }
            }

            $('#gallery_container').html(tba);
        }
    } 
 });
</script>

どうぞよろしくお願いいたします。良い一日を。

4

2 に答える 2

0

関数の外で変数を定義すると、関数から値が取得されます。これはグローバル スコープと呼ばれます。それ以外の場合は、関数スコープ内でのみ使用できます。

これをチェックして:

var a = 30;

function foo() {
    a = 25;
}
foo();
alert(a); // will give 25

ライブチェックはこちら

したがって、コードは次のようになります。

<script type="text/javascript">
 $(document).ready(function() {
     var tba = '';
     function readURL(input) {      
        if (input.files) {
            for (var i = 0; i < input.files.length; i++) {
                if(input.files[i]) {

                    var reader = new FileReader();

                    reader.onload = function (e) {
                            tba += '<div class="gallery_image"><img src="'+e.target.result+'" alt="Image currently not accessible" /></div>';
                    };

                    reader.readAsDataURL(input.files[i]);
                }
            }

            $('#gallery_container').html(tba);
        }
    } 
 });
</script>
于 2013-06-27T08:17:18.710 に答える