• 原生JS上传图片视频,可预览删除(待)


    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>上传</title>
    <!-- <script src="jquery-3.4.1.min.js"></script> -->
    <style>
    #file-list{
        display: flex;
        flex-wrap: wrap;
    }
    #file-list li{
        list-style: none;
        display: flex;
        text-align: center;
        align-items: center;
        justify-content: center;
         150px;
        height: 150px;
        line-height: 150px;
        font-size: 14px;
        color: #fff;
        border-radius: 4px;
        margin: 0 6px 6px 0;
        background: #ededed;
        overflow: hidden;
        overflow: hidden;
    }
    #file-list li .img-misk{
        position: absolute;
        top: 0;
        left: 0;
         100%;
        height: 100%;
        background: rgba(0,0,0,0.3);
        transition: all .3s;
        opacity: 0;
    }
    #file-list li:hover .img-misk{
        opacity: 1;
    }
    #file-list li span{
        margin: 0 4px;
        cursor: pointer;
    }
    #file-list li img{
        max- 100%;
    }
    
    </style>
    </head>
    <body>
        <div>
            <div id="showimg">
                <ul id="file-list"></ul>
                <label for="upgteimg">Select some files</label>
                <input type="file" id="upgteimg" value="" multiple="multiple" hidden/>
            </div>
        </div>
    <script>
    window.onload = function () {
        let readFile = document.querySelector("#upgteimg"),
            showui = document.querySelector("#file-list"),
    
            dataObj = {},
            index = 0,
    
            imgDele = readFile.querySelector('.delete'),
            imgView = readFile.querySelector('.view');
    
        // 上传图片
        readFile.addEventListener('change', function(){
            for (let i = 0; i < this.files.length; i++) {
                let url = URL.createObjectURL(this.files[i])
                let reader = new FileReader();
                let file = this.files[i];
    
                index++;   // image index
    
                reader.readAsDataURL(this.files[i]);
     
                (function(index){
                    reader.onload = (e) => {
                        let result = `<li data-id="${index}" data-url="${url}">
                                    <div class="img-misk">
                                        <span class="view" data-id="${index}">查看</span>
                                        <span class="delete" data-id="${index}">删除</span>
                                    </div>
                                    <img class="showimg" src="${url}"/>
                                </li>`;
                        showui.innerHTML += result;
                        dataObj[index] = url;
                    }
                })(index)
            }
        })
    
        // if (!readFile['value'].match(/.jpg|.gif|.png|.jpeg|.bmp/i)) {
        //     return alert("格式");
        // }
    
        // 操作图片
        showui.addEventListener('click', function(e){
            var e = e || window.event,
                target = e.srcElement || e.target,
                index = target.getAttribute('data-id'),
                name = target.className;
            switch(name){
                case 'delete':
                    return deleteImg(index)
                case 'view':
                    return viewImg(index)
            }
        })
    
        // delete image
        function deleteImg(index){
            let oLi = document.querySelectorAll("li");
            oLi.forEach(item => {
                if(item.dataset.id == index) return item.remove();
                console.log(index)
            })
            delete dataObj[index];
        }
    
        // view image
        function viewImg(index){
    
    
            document.body.appendChild("<div>2</div>");
    
    
    
            console.log(index)
        }
    
    
    }
    </script>
    </body>
    </html>
    
  • 相关阅读:
    linux中inittab文件详解
    Linux的 test 命令使用
    程序的链接和装入及Linux下动态链接的实现
    linux虚拟内存管理简要总结
    一些vim技巧和经验
    Linux cp mv rm ln 命令对于 inode 和 dentry 的影响
    Linux C编程一站式学习
    虚拟内存管理
    为何cp覆盖进程的动态库(so)会导致coredump
    linux下So覆盖导致coredump问题的分析
  • 原文地址:https://www.cnblogs.com/xiaobaiv/p/12720481.html
Copyright © 2020-2023  润新知