当前位置: 首页 > 知识库问答 >
问题:

图像上载和预览时的“删除”按钮

龙承德
2023-03-14

我想选择多个图像,并给这些图像一个按钮,以便用户可以删除图像以及。我可以做图像的预览,但我不能删除图像后预览。

这是我的javascript代码

function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // Loop through the FileList and render image files as thumbnails.
    for (var i = 0, f; f = files[i]; i++) {

      // Only process image files.
      if (!f.type.match('image.*')) {
        continue;
      }

      var reader = new FileReader();

      // Closure to capture the file information.
      reader.onload = (function(theFile) {
        return function(e) {
          // Render thumbnail.
          var span = document.createElement('span');
          span.innerHTML = ['<img class="thumb" src="', e.target.result,
                            '" title="', escape(theFile.name), '"/>'].join('');
          document.getElementById('list').insertBefore(span, null);
        };
      })(f);

      // Read in the image file as a data URL.
      reader.readAsDataURL(f);
    }
  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);

这是我的HTML代码,其中id=list是图像显示为缩略图的区域:

<div class="file-upload">
    <div class="file-select">
        <div class="file-select-button" id="fileName">Choose Image</div>
        <div class="file-select-name" id="noFile"></div>
        <input type="file" id="files" name="files[]" multiple />
    </div>
</div>
</div>
<div class="col-lg-12 col-md-12 col-xs-12 xol-sm-12">
    <output id="list"></output>
</div>

如何插入删除选项与每一个图像?

共有2个答案

周宏胜
2023-03-14

我的Js代码:

  $(document).ready(function() {

    function handleFileSelect(evt) {
        var files = evt.target.files; // FileList object

        // Loop through the FileList and render image files as thumbnails.
        for (var i = 0, f; f = files[i]; i++) {

          // Only process image files.
          if (!f.type.match('image.*')) {
            continue;
          }

          var reader = new FileReader();

          // Closure to capture the file information.
          reader.onload = (function(theFile) {
            return function(e) {
              // Render thumbnail.
              var span = document.createElement('span');
              span.innerHTML = ['<div class="col-lg-3 col-md-3 col-xs-3 xol-sm-3" id="butt"><div class="container1"><img class="thumb img-responsive" src="', e.target.result,'" title="', escape(theFile.name), '" /><div class="overlay"><div class="text"><i class="fa fa-trash-o" aria-hidden="true" style="font-size:40px;color:#fff;"></i></div></div></div></div>'].join('');
              document.getElementById('list').insertBefore(span, null);
            };
          })(f);

          // Read in the image file as a data URL.
          reader.readAsDataURL(f);
        }
      }

      document.getElementById('files').addEventListener('change', handleFileSelect, false);


      $('#list').on('click', '#butt',function () {
              $(this).parent('span').remove();

      //this is not working...
      var i = array.indexOf($(this));
      if(i != -1) {
          array.splice(i, 1);
      }
      // tried this too:
      //$(this).parent('span').splice( 1, 1 );

      count--;
      });
});

我的Html代码:

 <div class="row bgcolor">
                            <div class="col-lg-6 col-md-16 col-xs-12 xol-sm-12">
                                <div class="file-upload">
                                    <div class="file-select">
                                        <div class="file-select-button" id="fileName">Choose Images
                                        </div>
                                        <input type="file" id="files" name="files[]" multiple />

                                    </div>
                                </div>
                            </div>
                            <div class="col-lg-12 col-md-12 col-xs-12 xol-sm-12">
                                <output id="list">  

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

我的css代码:

.container1 {
  position: relative;
  width: 92%;
}

.image {
  display: block;
  width: 100%;
  height: auto;
}

.overlay {
  position: absolute;
  top: 0;
  bottom: 0;
  left: -14px;
  right: 0;
  height: 100%;
  width: 100%;
  opacity: 0;
  transition: .5s ease;
      background-color: #000;
}
.overlay1 {
  position: absolute;
  top: 0;
  bottom: 0;
  left: -14px;
  right: 0;
  height: 100%;
  width: 100%;
  opacity: 3;
  transition: .5s ease;
/*      background-color: #000;*/
}
.container1:hover .overlay1 {
 opacity: 0.2;
}


.container1:hover .overlay {
 opacity: 0.2;
}

.text {
  color: white;
  font-size: 20px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  text-align: center;
}

这是正确答案!!!

谢谢你的帮助

慕容渊
2023-03-14

检查此https://jsfiddle.net/dp722j27/10/

您可以使用如下所示的delete方法

function deleteImage() { 
    var index = Array.from(document.getElementById('list').children).indexOf(event.target.parentNode)
    document.querySelector("#list").removeChild( document.querySelectorAll('#list span')[index]);
    totalFiles.splice(index, 1);
    console.log(totalFiles)
}

和您的呈现方法类似

  var span = document.createElement('span');
  span.innerHTML = ['<img width=100 class="thumb" src="', e.target.result,
                    '" title="', escape(theFile.name), '"/>', "<button onclick='deleteImage()'>delete</button>"].join('');

  document.getElementById('list').insertBefore(span, null);

您可以将这些值存储在数组中,并像这样处理它

 类似资料:
  • 问题内容: 我希望能够在上传文件之前预览文件(图像)。预览操作应在浏览器中全部执行,而无需使用Ajax上载图像。 我怎样才能做到这一点? 问题答案: 请看下面的示例代码:

  • 为什么我上传新图片时不能删除我的旧图片? 这是我用来存储数据和图像的控制器。我的文件图像名由nama_post_adps和$imageName组合存储,其中$imageName是对

  • 可以在 Adobe Bridge 的“预览”面板中,以全屏预览和审阅模式预览图像。“预览”面板会显示多达九张缩览图图像供您快速比较。全屏预览会以全屏方式显示图像。审阅模式以全屏视图显示图像,允许您在图像中导航,优化选择,标记、旋转图像和给图像评级,以及在 Camera Raw 中打开图像。 以幻灯片放映的方式查看图像 使用“幻灯片放映”命令可以全屏幕幻灯片放映的方式查看缩览图。在处理一个文件夹中所

  • 本文向大家介绍Nodejs实现图片上传、压缩预览、定时删除功能,包括了Nodejs实现图片上传、压缩预览、定时删除功能的使用技巧和注意事项,需要的朋友参考一下 前言 我们程序员日常都会用到图片压缩,面对这么常用的功能,肯定要尝试实现一番。 第一步,node基本配置 这里我们用到的是koa框架,它可是继express框架之后又一个更富有表现力、更健壮的web框架。 1、引入基本配置 2、使用基本配置

  • 嘿,伙计们,我需要帮助删除这个按钮并从json文件中加载数据,而不需要点击这个按钮。下面是代码 //从json文件获取内容 @重写小部件构建(BuildContext上下文){Future readJson()异步{final String response=await rootBundle.loadString('assets/aaaa.json');final data=await json.

  • 问题内容: 我要预览表单中的图像或照片,但是它不起作用,并且HTML代码如下所示: 并在下面合并了JS代码/脚本: 我的表单上有两个主要问题: 1.为什么图像或图片的预览不起作用? 2.当单击保存按钮时,如何从表单粘贴照片,它将链接到我创建的另一个PHP或PHP页面? 问题答案: 试试这个:(用于预览) 在这里工作演示>