• JS实现预览上传的图片


           也是这学期的WEB前端编程课,做答辩项目的时候用带的一个功能。之前是组内小伙伴写的,用了两个函数实现,但这两个函数的内容基本一致。按照编程的思维,应该把它改成可复用的,于是就有了修改后的版本。为了方便阅读,这里也写一下修改原理(注释里也有)。
           修改原理其实有点歪门邪道:DisplayPic(this)中的this是指input控件本身,于是我把img的id改成跟input的name相同,这样一来就可以通过获取input的name属性来得到img标签的id,也就可以修改对应img的属性。

    效果预览

    修改前

    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>JS display picture</title>
    </head>
    <body>
    <div>
        <form action="#" method="post" enctype="multipart/form-data">
            <p>图片1</p>
            <input id="file1" name="file1" type="file" value="选择图片" onchange="DisplayPic1(this)">
            <img id="showpic1" src="" alt="" style="display: none; max- 600px; max-height: 600px"/><br>
            <p>图片2</p>
            <input id="file2" name="file" type="file" value="选择图片" onchange="DisplayPic2(this)">
            <img id="showpic2" src="" alt="" style="display: none; max- 600px; max-height: 600px"/><br>
            <input type="submit" value="提交">
            <!-- 脚本作用:选择图片之后,显示在页面上-->
            <script>
                var pic1 = '';
                function DisplayPic1(file) {
                    if (!file.files || !file.files[0]) {
                        return;
                    }
                    var reader = new FileReader();
                    reader.onload = function (evt) {
                        document.getElementById('showpic1').style.display = 'block';
                        document.getElementById('showpic1').src = evt.target.result;
                        pic1 = evt.target.result;
                        console.log(pic1)
                    }
                    reader.readAsDataURL(file.files[0]);
                }
    
                var pic2 = '';
                function DisplayPic2(file) {
                    if (!file.files || !file.files[0]) {
                        return;
                    }
                    var reader = new FileReader();
                    reader.onload = function (evt) {
                        document.getElementById('showpic2').style.display = 'block';
                        document.getElementById('showpic2').src = evt.target.result;
                        pic2 = evt.target.result;
                        console.log(pic2)
                    }
                    reader.readAsDataURL(file.files[0]);
                }
            </script>
        </form>
    </div>
    </body>
    </html>
    

    修改后

    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>JS display picture</title>
    </head>
    <body>
    <div>
        <form action="#" method="post" enctype="multipart/form-data">
            <p>图片1</p>
            <input id="input_pic1" name="pic1" type="file" value="选择图片" onchange="new DisplayPic(this)">
            <img id="pic1" src="" alt="" style="display: none; max- 600px; max-height: 600px"/><br>
            <p>图片2</p>
            <input id="input_pic2" name="pic2" type="file" value="选择图片" onchange="new DisplayPic(this)">
            <img id="pic2" src="" alt="" style="display: none; max- 600px; max-height: 600px"/><br>
            <input type="submit" onclick="" value="提交">
            <!-- 脚本作用:选择图片之后,显示在页面上-->
            <script>
                // 修改原理其实有点歪门邪道:
                // DisplayPic(this)中的this是指input控件本身,于是我把img的id改成跟input的name相同
                // 这样一来就可以通过获取input的name属性来得到img标签的id,也就可以修改对应img的属性
                var pic = '';
                function DisplayPic(obj) {
                    if (!obj.files || !obj.files[0]) {
                        return;
                    }
                    var reader = new FileReader();
                    var name = obj.name;
                    reader.onload = function (evt) {
                        document.getElementById(name).style.display = 'block';
                        document.getElementById(name).src = evt.target.result;
                        pic = evt.target.result;
                        console.log(pic)
                    }
                    reader.readAsDataURL(obj.files[0]);
                }
            </script>
        </form>
    </div>
    </body>
    </html>
    
  • 相关阅读:
    Elasticsearch嵌套聚合
    Elasticsearch+Logstash+Kibana教程
    《胡雪岩·灯火楼台》—— 读后总结
    Elasticsearch使用REST API实现全文检索
    Elasticsearch集群配置以及REST API使用
    《Node web开发》笔记
    我的第一个Node web程序
    Spring boot整合shiro权限管理
    SpringBoot 整合Shiro 一指禅
    SpringBoot,用200行代码完成一个一二级分布式缓存
  • 原文地址:https://www.cnblogs.com/ast935478677/p/13204304.html
Copyright © 2020-2023  润新知