zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/ast935478677/p/13204304.html
Copyright © 2011-2022 走看看