如何使用 OnClick 事件更改结构 JS 的覆盖图像

how do i change overlay image of fabric js with onclick event?

本文关键字:JS 覆盖 覆盖图 图像 结构 何使用 OnClick 事件      更新时间:2023-09-26

我是javascript的新手,所以我需要一些帮助。IM制作了一个网站,人们可以在其中上传图像,客户可以通过单击"下一个"或"上一个"来选择他们的框架。问题是我无法更改框架,除此之外一切都在工作。这是代码

                       <canvas id="canvas" width="500" height="610" style="border:0px solid gray"></canvas>
        <input type="file" id="imgLoader">
        <img src="https://www.wpclipart.com/page_frames/movie/film_frame_page_T.png" id="fg_img" width="500" height="610" style="display: none;">
        <script>
        var canvas = new fabric.Canvas('canvas');
        var up = document.getElementById("fg_img").getAttribute("src");
    canvas.setOverlayImage(up, canvas.renderAll.bind(canvas));
document.getElementById('imgLoader').onchange = function handleImage(e) {
    var reader = new FileReader();
    reader.onload = function (event) { console.log('fdsf');
        var imgObj = new Image();
        imgObj.src = event.target.result;
        imgObj.onload = function () {
            var image = new fabric.Image(imgObj);
            image.set({

            });
            //image.scale(getRandomNum(0.1, 0.25)).setCoords();
            canvas.add(image);

        }
    }
    reader.readAsDataURL(e.target.files[0]);
}
</script>

这是图像更改的功能

<script type="text/javascript">
var img_tk="m1";
   function imgChange1(){
    var newImage = document.getElementById('fg_img');

        if (img_tk=="m1"){
                newImage.src="images/7.png";
                img_tk="m2";
            }
        else if (img_tk=="m2"){
                newImage.src="images/4.png";
                img_tk="m3";
            }
        else if (img_tk=="m3"){
                newImage.src="images/6.png";
                img_tk="m4";
            }
        else {
                newImage.src="images/2.png";
                img_tk="m1";
            }
    }
</script>

提前致谢:)

您可能会遇到某种缓存问题,例如: 更改"img"html元素的"src"不会刷新它。

在这种情况下,您可以通过在 src 后添加日期来修复它,如下所示:

newImage.src = "images/7.png?t=" + new Date().getTime();