Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] cargar img desde input file

Estas en el tema de cargar img desde input file en el foro de Javascript en Foros del Web. Hola chicos, no entiendo porque no funciona si meto el script aparte del html. En cambio si esta todo junto si funciona. Como lo puedo ...
  #1 (permalink)  
Antiguo 06/04/2016, 10:22
 
Fecha de Ingreso: diciembre-2015
Mensajes: 64
Antigüedad: 8 años, 3 meses
Puntos: 0
cargar img desde input file

Hola chicos,
no entiendo porque no funciona si meto el script aparte del html. En cambio si esta todo junto si funciona.
Como lo puedo solucionar ???

Aqui os dejo el codigo

html
----------------------------------------------------------------
Código HTML:
Ver original
  1. <input type="file" id="files" name="files[]" />
  2. <output id="list"></output>

js
----------------------------------------------------------------
Código Javascript:
Ver original
  1. function archivo(evt) {
  2.   var files = evt.target.files; // FileList object
  3.  
  4.   // Obtenemos la imagen del campo "file".
  5.   for (var i = 0, f; f = files[i]; i++) {
  6.     //Solo admitimos imágenes.
  7.     if (!f.type.match('image.*')) {
  8.         continue;
  9.     }
  10.  
  11.     var reader = new FileReader();
  12.  
  13.     reader.onload = (function(theFile) {
  14.         return function(e) {
  15.           // Insertamos la imagen
  16.          document.getElementById("list").innerHTML = ['<img class="thumb" src="', e.target.result,'" title="', escape(theFile.name), '"/>'].join('');
  17.         };
  18.     })(f);
  19.  
  20.     reader.readAsDataURL(f);
  21.   }
  22. }
  23.  
  24. document.getElementById('files').addEventListener('change', archivo, false);


saludos
gracias
  #2 (permalink)  
Antiguo 06/04/2016, 15:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: cargar img desde input file

Quizá no estás incluyendo correctamente al archivo JS. Siempre revisa la consola del navegador; si se produce un error, se mostrará el respectivo mensaje.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 06/04/2016, 16:22
 
Fecha de Ingreso: diciembre-2015
Mensajes: 64
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: cargar img desde input file

si, me dice esto:
TypeError: document.getElementById(...) is null
document.getElementById('files').addEventListener( 'change', archivo, false);

pero no entiendo porque.
:S
  #4 (permalink)  
Antiguo 06/04/2016, 21:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: cargar img desde input file

Quizá estás incluyendo al archivo en la cabecera, por lo que termina ejecutándose antes de que carguen los elementos del documento. Eso explica el mensaje que obtienes.

Tienes dos opciones: inserta el archivo al final del documento, justo antes de la etiqueta </body> o encierra la línea de ejecución de la función dentro del siguiente bloque:
Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     document.getElementById('files').addEventListener('change', archivo, false);
  3. }, false);

De esta manera, se ejecutará la instrucción una vez cargado el modelo de objetos del documento.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 07/04/2016, 02:53
 
Fecha de Ingreso: diciembre-2015
Mensajes: 64
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: cargar img desde input file

FUNCIONO !!!!
muchas gracias :)

Etiquetas: file, funcion, html, img, input, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.