Foros del Web » Programando para Internet » Javascript »

Añadir input

Estas en el tema de Añadir input en el foro de Javascript en Foros del Web. Buenas,,,, tengo un pequeño problema con este script que arme... Se supone que agregar un input si X es 1, pues si lo hace ahora ...
  #1 (permalink)  
Antiguo 07/06/2011, 13:55
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Añadir input

Buenas,,,, tengo un pequeño problema con este script que arme...

Se supone que agregar un input si X es 1, pues si lo hace ahora el problema:

Cuando entra al if la primera vez tiene que crear el input ya que este no existe..
pero si yo clckeo por 2da vez el mismo boton este deberia de salir por el else ya que imgfile_1 si existe y no deberia de repetir el procedimiento pero no encuentro el error y si repite el mismo procedimiento tantas veces que clickee en el boton

Código Javascript:
Ver original
  1. function image(x){
  2.     switch(x){
  3.                 case 1:
  4.                     if(document.getElementsByName("imgfile_"+x).name==undefined){
  5.                         input = document.createElement("input");
  6.                         input.name = "imgfile_"+x;
  7.                         input.type = "file";
  8.                         document.body.appendChild(input);
  9.                     }else{
  10.                         alert("else");
  11.                     }
  12.                 break;
  13.             }
  14. }
  #2 (permalink)  
Antiguo 07/06/2011, 14:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Añadir input

buenas,
tienes mal la condicion de if. getElementsByTagName siempre devuelve una coleccion (objeto parecido a un array) aunque no encuentre ningun elemento. de modo que la funcion en si no te devuelve un elemento en particular. dicha coleccion no define la propiedad name, por tanto la condicion siempre sera cierta. ¿que puedes hacer? siguiendo el codigo que ya tienes, determina la longitud de la coleccion en la condicion. si es cero significa que no existe ningun elemento con dicho nombre, y viceversa, uno o mas quiere decir que existen elementos. simplemente lees la longitud e inviertes su valor boolean con el operador not (!).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 07/06/2011, 14:24
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Añadir input

No entiendo muy bien tu propuesta, me podrias explicar con algun ejemplo, aunque sea inventado una vez que lo entienda lo implemento a mi codigo,

Gracias
  #4 (permalink)  
Antiguo 07/06/2011, 14:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Añadir input

como te decia, getElementsByTagName devuelve una coleccion. ese objeto tiene la propiedad length, el cual es un numero indicando cuantos elementos existen en esa coleccion. en javascript, cuando usas el operador not con un numero, dicha operacion resulta en un boolean donde !0 es equivalente a true porque cero convertido a boolean es falso. para cualquier otro numero, la operacion resulta false. por tanto, lo que tenias que hacer era !getElementsByTagName("nombre").length.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 07/06/2011, 14:56
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Añadir input

Nose porque pero no me funciono,

Igual lo pude solucionar de otra manera que no me afecta "por ahora" creo :P
Lo único que hice fue darle un ID unico a cada input y luego hago la comprobacion dejo el script por si alguien mas le sucede lo mismo

Código Javascript:
Ver original
  1. function image(x){
  2.     switch(x){
  3.                 case 1:
  4.                     if(!document.getElementById("file_"+x)){
  5.                         input = document.createElement("input");
  6.                         input.name = "imgfile_"+x;
  7.                         input.type = "file";
  8.                         input.id   = "file_"+x; //le indique un ID unico
  9.                         document.body.appendChild(input);
  10.                     }
  11.             }
  12. }

Gracias por ayudarme zerokilled

Etiquetas: input
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 08:17.