javascript - 为什么执行两次?

标签 javascript html file-upload drag-and-drop

This was solved, check the solution by DBS

我正在尝试创建一个像 mediafire 这样的拖放输入。我遇到重复两次的函数的问题。

来自浏览器控制台的消息:

se ejecuta la funcion file:13:3
File { name: "8b32cacb0ad946479513721142c7fc9f.jp…", lastModified: 1447114071000, lastModifiedDate: Date 2015-11-10T00:07:51.000Z, size: 161020, type: "image/jpeg" } file:18:7
fin de bucle file:30:5
se ejecuta la funcion file:13:3
File { name: "8b32cacb0ad946479513721142c7fc9f.jp…", lastModified: 1447114071000, lastModifiedDate: Date 2015-11-10T00:07:51.000Z, size: 161020, type: "image/jpeg" } file:18:7
fin de bucle file:30:5

代码

script.
      var dropZone = document.getElementById('dropZone');
      dropZone.addEventListener("drop", drop, false);
      var miniatures = document.getElementById("miniatures");
      var miniature = document.createElement("div");
      miniature.className = "all-20"; 
      var img = document.createElement("img");
      var files;
      var reader = [];

      // mecanica
      function drop(e){
        console.log("se ejecuta la funcion");
        var dt = e.dataTransfer;
        files = dt.files;
        for (var i = 0; i < files.length; i++){
            var file = files[i];
            console.log(file);
            img.file = file;          
            miniature.appendChild(img);
            miniatures.appendChild(miniature);
            reader[i] = new FileReader();
            reader[i].onload = (function(event){
              return function(e){
                event.src= e.target.result;
              };
            })(img);
            reader[i].readAsDataURL(file);
          }
          console.log('fin de bucle');
      }

HTML

form(action="" enctype="multipart/form-data")
              input(class="all-100 drop ink-droppable align-center fallback" type="file" multiple="multiple" id="dropZone" ondrop="drop(event)")

最佳答案

您将附加 drop 事件两次,一次在 HTML 中,一次在 JS 中。

删除其中一项:

ondrop="drop(event)"

var dropZone = document.getElementById('dropZone');
dropZone.addEventListener("drop", drop, false);

关于javascript - 为什么执行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37682368/

相关文章:

javascript - 停止 javascript div 旋转

javascript - Fabricjs - 如何检测存在对象的 Canvas 的总宽度/高度

html - 我如何在angular4中集成paytm

java - 使用 GWT 请求工厂上传文件

javascript - 在 Javascript 中如何先执行 image.onload 函数,然后再继续其余过程

php - 上传到 PHP 服务器时将文件名写入 OutputStream,以便正确命名文件

javascript - 隐藏 iPhone 键盘上方的工具栏,PhoneGap

javascript - 如何使用 jQuery 通过选项卡选择来显示内容?

javascript - 为什么 setTimeout 不等待调用函数?

javascript - 从 anchor 标记触发时,Bootstrap 3 Modal 不会弹出