Foros del Web » Programando para Internet » Javascript »

problema al mostrar imagen en DOM.

Estas en el tema de problema al mostrar imagen en DOM. en el foro de Javascript en Foros del Web. buenas. habia publicado un tema de como colocar un estilo en un DOM. alli pude mostrar el estilo en un input. pero ahora se me ...
  #1 (permalink)  
Antiguo 17/12/2010, 09:57
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Pregunta problema al mostrar imagen en DOM.

buenas. habia publicado un tema de como colocar un estilo en un DOM. alli pude mostrar el estilo en un input. pero ahora se me presento otro problema. cuando hago el upload multiple, me sale un texto X que es obviamente para remover el input file.

cuando le remplazo el texto x por una imagen de borrar en el innerHTML, no remueve los input files de la funcion js.

he creado un elemento img. lo instancie en el appendchild y me muestra un mensaje como si no reconociera la imagen.

[object HTMLImageElement]

este es mi codigo.

Código Javascript:
Ver original
  1. //creamos un elemento imagen.
  2.     imagen = document.createElement('img');
  3.     imagen.src = "../imagenes/delete.png";
  4.    
  5. //Ahora creamos un link para poder eliminar un campo que ya no deseemos
  6.    a = document.createElement('a');
  7. //El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
  8.    a.name = nDiv.id;
  9. //Este link no debe ir a ningun lado
  10.    a.href = 'javascript:void(0);';
  11. //Establecemos que dispare esta funcion en click
  12.    a.onclick = elimCamp;
  13.    a.className = 'enlaces';
  14.    
  15. //Con esto ponemos el texto del link
  16.    a.innerHTML = imagen;
  17. //Bien es el momento de integrar lo que hemos creado al documento,
  18. //primero usamos la función appendChild para adicionar el campo file nuevo
  19.    nDiv.appendChild(nCampo);
  20. //Adicionamos el Link
  21.    nDiv.appendChild(a);

agradeceria si me ayudaran con mi tema.

saludos.
  #2 (permalink)  
Antiguo 17/12/2010, 10:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: problema al mostrar imagen en DOM.

innerHTML admite solo strings, no puedes asignarle la instancia de un objeto, ¿porque no usas appendChild?:

//a.innerHTML = imagen;
a.appendChild(imagen);

a sigue siendo un nodo de DOM, aplicaría lo mismo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 17/12/2010, 10:17
 
Fecha de Ingreso: noviembre-2009
Ubicación: 127.0.0.1
Mensajes: 31
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: problema al mostrar imagen en DOM.

Sí lo reconoce, tienes que usar la propiedad .nodeValue
  #4 (permalink)  
Antiguo 17/12/2010, 10:27
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: problema al mostrar imagen en DOM.

gracias por las respuestas maycolalvarez y devnieL.

instancie el objeto img.

Código HTML:
Ver original
  1. a.appendChild(imagen);

y me da error.

devnieL, como colocaria la propiedad .nodeValue ?.

saludos.
  #5 (permalink)  
Antiguo 17/12/2010, 12:08
 
Fecha de Ingreso: noviembre-2009
Ubicación: 127.0.0.1
Mensajes: 31
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: problema al mostrar imagen en DOM.

la verdad que no entiendo muy bien tu problema, pero si no me equivoco creo que quieres reemplazar un link por una imagen, o que al a hacer clic en la imagen se elimine un nodo. En ese caso no utilices la etiqueta <a>, solo crea la imagen y luego le agregas el evento onclick :

Código HTML:
img.addEventListener("click",function(){
// Código para eliminar el nodo
},false);
Para colocarlo le agregas estilo, etc. Si explicas mejor tu problema te puedo ayudar, así también practico mi javascript
  #6 (permalink)  
Antiguo 17/12/2010, 12:53
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: problema al mostrar imagen en DOM.

gracias por la respuesta devnieL. no especifique bien el problema.

dentro del vinculo colocar la imagen y de alli se elimine el nodo cuando hago clic en la imagen de borrar.

saludos.
  #7 (permalink)  
Antiguo 17/12/2010, 14:11
 
Fecha de Ingreso: noviembre-2009
Ubicación: 127.0.0.1
Mensajes: 31
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: problema al mostrar imagen en DOM.

Bueno, creo que así es. Recuerda que solo a ciertos elementos puedes asignarle el evento onclick, recomendaría revises el método addEventListener.


Código Javascript:
Ver original
  1. window.onload = function(){
  2. var img = document.createElement("img");
  3. img.src = "../img/icons/book_16.png";
  4.  
  5. as = document.createElement("a");
  6. as.name = "otro";
  7. as.href = 'javascript:void(0);';
  8.  
  9. as.addEventListener("click",function(){
  10.     // Eliminar nodo
  11. },false);
  12.  
  13.    as.appendChild(img);
  14.  
  15. document.getElementById("caja").appendChild(as);
  16. }
  #8 (permalink)  
Antiguo 17/12/2010, 15:15
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: problema al mostrar imagen en DOM.

gracias por la respuesta. mejor le explico con detalles de que se trata la aplicacion que estoy desarollando.

tengo mi formulario de upload. hay un enlace para agregar mas input files. habia mencionado que cuando reemplazo el texto por una imagen (osea colocar dento del vinculo una imagen) me da error por que la propiedad del innerHTML solo acepta cadenas.

refrequé la pagina y cuando quise agregar mas imagenes, no me genero ningun input file.

para no confundirlo, el ejemplo del upload multiple me guie de un aporte de cristalab.

Subir multiples archivos con php

y este es el codigo que he modificado.

Código Javascript:
Ver original
  1. var numero = 0; //Esta es una variable de control para mantener nombres
  2.             //diferentes de cada campo creado dinamicamente.
  3. evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
  4.    return (!evt) ? event : evt;
  5. }
  6.  
  7. //Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
  8. addCampo = function () {
  9. //Creamos un nuevo div para que contenga el nuevo campo
  10.    nDiv = document.createElement('div');
  11. //con esto se establece la clase de la div
  12.    nDiv.className = 'imagenes';
  13. //este es el id de la div, aqui la utilidad de la variable numero
  14. //nos permite darle un id unico
  15.    nDiv.id = 'file' + (++numero);
  16. //creamos el input para el formulario:
  17.    nCampo = document.createElement('input');
  18. //le damos un nombre, es importante que lo nombren como vector, pues todos los campos
  19. //compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
  20.    nCampo.name = 'imagenes[]';
  21.    nCampo.className = 'formularios';
  22. //Establecemos el tipo de campo
  23.    nCampo.type = 'file';
  24.    
  25.  
  26.     window.onload = function(){
  27.     var img = document.createElement("img");
  28.     img.src = "../img/icons/book_16.png";
  29.    
  30.     a = document.createElement('a');
  31.     //El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
  32.     a.name = nDiv.id;
  33.     //Este link no debe ir a ningun lado
  34.     a.href = 'javascript:void(0);';
  35.     //Establecemos que dispare esta funcion en click
  36.     //a.onclick = elimCamp;
  37.     a.className = 'enlaces';
  38.    
  39.     a.addEventListener("click",function(){
  40.     // Eliminar nodo
  41.     },false);
  42.    
  43.     a.appendChild(img);
  44.    
  45.     //Bien es el momento de integrar lo que hemos creado al documento,
  46.     //primero usamos la función appendChild para adicionar el campo file nuevo
  47.     nDiv.appendChild(nCampo);
  48.     //Adicionamos el Link
  49.     nDiv.appendChild(a);
  50.     //Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
  51.     //con esta función obtenemos una referencia a ella para usar de nuevo appendChild
  52.     //y adicionar el div que hemos creado, la cual contiene el campo file con su link de eliminación:
  53.     container = document.getElementById('adjuntos');
  54.     container.appendChild(nDiv);   
  55.    
  56.     }
  57.    
  58. }
  59. //con esta función eliminamos el campo cuyo link de eliminación sea presionado
  60. elimCamp = function (evt){
  61.    evt = evento(evt);
  62.    nCampo = rObj(evt);
  63.    div = document.getElementById(nCampo.name);
  64.    div.parentNode.removeChild(div);
  65. }
  66. //con esta función recuperamos una instancia del objeto que disparo el evento
  67. rObj = function (evt) {
  68.    return evt.srcElement ?  evt.srcElement : evt.target;
  69. }

saludos.

Etiquetas: dom
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 17:12.