javascript - 添加多个带有预览的图像

标签 javascript jquery

我有多个图像需要上传,在预览中用户应该能够选择其中一张图像作为其主图像。我的想法是为它们分配一个可计数的 ID,但这似乎不起作用,他们上传的图像数量始终具有相同的 ID。这是我正在使用的js代码

$(function() {

  var imagesPreview = function(input, placeToInsertImagePreview) {

    if (input.files) {
        var filesAmount = input.files.length;

        for (i = 0; i < filesAmount; i++) {
            var reader = new FileReader();

            reader.onload = function(event) {
                $($.parseHTML("<img height=' 50px' width='50px' class='img-id' id='" +i+"'>")).attr('src', event.target.result).appendTo(placeToInsertImagePreview);

            }

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

        }
    }

};

$('#gallery-photo-add').on('change', function() {
    imagesPreview(this, 'div.gallery');
});
});

最佳答案

我认为这里的问题是因为您将 i 声明为全局变量,因此当调用 onload 方法时,它会获取 i > 全局值现在等于您的数组大小。

通过正确声明 var 来修复。

$(function() {

    var imagesPreview = function(input, placeToInsertImagePreview) {
        if (input.files) {
            var filesAmount = input.files.length;

            for (var i = 0; i < filesAmount; i++) {
                let index = i;
                var reader = new FileReader();

                reader.onload = function(event) {
                    $($.parseHTML("<img height=' 50px' width='50px' class='img-id' id='" + index + "'>"))
                      .attr('src', event.target.result)
                      .appendTo(placeToInsertImagePreview);

                }

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

            }
        }

    };

    $('#gallery-photo-add').on('change', function() {
        imagesPreview(this, 'div.gallery');
    });
});

关于javascript - 添加多个带有预览的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59912127/

相关文章:

asp.net - 如何在同一页面上运行不同版本的 jQuery?

jquery - 如何使用 js 或 jQuery 与 iframe 的内容进行交互

javascript - 在更改另一个动态下拉列表时禁用动态下拉选项值

javascript - 禁用 turobolinks 来服务页面特定的 javascript

javascript - 在继续之前我如何等待谷歌远程调用返回我的结果

javascript - expo-video-player 出现问题,它会抛出错误 : setAudioModeAsync

javascript - 如何停止所有当前正在播放的 MediaElement 播放器?

jquery - 检查单选按钮是否不为空

javascript - 动画不缓和

javascript - 413 请求实体太大 HighCharts