2016-06-07 2 views
0

Это было решено проверить решение по 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)") 
+0

Итак, в чем собственно проблема? Я думал, что вы только хотели, чтобы он выполнялся один раз, но тогда вы говорите: «Вторая - показать миниатюры всех отброшенных файлов». Поэтому я не уверен, что вы на самом деле пытаетесь решить. – DBS

+0

Я добавил раздел HTML, так или иначе, функция drop (e) должна выполняться всего один раз. –

ответ

1

Вы прикрепление событие падение в два раза, один раз в HTML и один раз в JS.

Удалите один из них:

ondrop="drop(event)" 

или

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

спасибо, это решает первую ситуацию –

Смежные вопросы