在图像单击时显示弹出窗口

Posted

技术标签:

【中文标题】在图像单击时显示弹出窗口【英文标题】:Showing popup on image click 【发布时间】:2021-04-26 18:05:01 【问题描述】:

我正在使用此代码来显示图像。 问题是它只显示第一张图像而不是其余图像的弹出窗口。 图像是从数据库加载的,因此它们都具有相同的 id。 是这个问题还是别的什么?

代码:

        if (ViewBag.ReceptiSearchAll != null)
        

            <div class="col-6 col-lg">
               @foreach (var images in ViewBag.ReceptiSearchImages)
                                                              

                    if (images.Image != null)
                    
                        imagePath = images.Image;
                    
                    else
                    
                        imagePath = images.ImageDefault;
                    

                    <div class="card mb-3" style="max-width: 400px;border:none">
                        <div class="row no-gutters">
                            <div class="col-md-12">

                                <img id="imgrec" class="card-img-top" src="data:image;base64,@System.Convert.ToBase64String(imagePath)"   >

                            </div>
                        </div>
                    </div>
                
            </div>
        


<script>
    // Get the modal
    var modal = document.getElementById("myModal");

    // Get the image and insert it inside the modal - use its "alt" text as a caption
    var img = document.getElementById("imgrec");
    var modalImg = document.getElementById("img01");
    var captionText = document.getElementById("caption");
    img.onclick = function () 
        modal.style.display = "block";
        modalImg.src = this.src;
        captionText.innerhtml = this.alt;
    

    // Get the <span> element that closes the modal
    var span = document.getElementsByClassName("close")[0];

    // When the user clicks on <span> (x), close the modal
    span.onclick = function () 
        modal.style.display = "none";
    
</script>


     

【问题讨论】:

【参考方案1】:

您所有的图片都有相同的 id。

id 是唯一的标识符。

var img = document.getElementById("imgrec");

因此,只有您的第一张图片会得到这个。

img.onclick = function () 
        modal.style.display = "block";
        modalImg.src = this.src;
        captionText.innerHTML = this.alt;
    

【讨论】:

以上是关于在图像单击时显示弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

在后台运行时显示弹出窗口的权限

当 MouseEnter 事件触发时显示弹出窗口

如何在 Kendo Multiselect 中悬停时显示弹出窗口

af:panelTabbed - 在选项卡切换时显示弹出窗口的问题

如何在应用程序每 3 次启动时显示弹出窗口?

如何在选择图像时显示弹出框