Ver Mensaje Individual
  #25 (permalink)  
Antiguo 11/12/2009, 21:11
Avatar de zerokilled
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: Crear y remover inputs

honestamente no se por donde empezar contigo. se me esta quebrando la cabeza pensando que me tengo que volver a repetir bien extensamente detalles que he ido explicando en el transcurso que he estado en este foro. quizas lo tenga que hacer segun vaya descubriendo detalles acerca de ti.

en el ejemplo de price unit se utiliza getElementsByTagName el cual devuelve una coleccion de elementos y de ahi hago las referencia a los campos. en este caso no utiliza ID para los campos, de eso debes haberte fijado si miras el codigo fuente. por tanto, intentar hacerlo por getElementById simplemente no funcionara. no porque sea imposible realizarlo, sino porque el codigo carece de ese detalle.
Código:
<li><input type='text' class='desc' /> <input type='text' class='price' /> <input type='text'class='percentage' /> <input type='text' class='sell' readonly='readonly' /> <button type='button' value='remove'>Remove</button></li>
en el codigo, fijate que cada vez que aparece inputs va seguido de corchetes con un numero. cada una de esas ocurrencias son las referencia a los inputs de una fila en particular.
Código:
var inputs = elem.parentNode.getElementsByTagName('input');
var price = Number(inputs[1].value);
var sell = price / 100 * Number(inputs[2].value) + price;
if(!isNaN(sell))inputs[3].value = '$ ' + sell.toLocaleString();
¿como obtengo una fila en particular para obtener referencia de los campos?
en la aplicacion no le di importancia a ese detalle porque lo importante de ella es computar todos los datos disponibles segun la cantidad de fila. para ello sucede algo similar con los campos. con la funcion getElementsByTagName obtengo todas las filas disponibles.
Código:
var lists = document.getElementsByTagName('li');
lo pude haber hecho asignando un ID a cada fila y luego con la funcion getElementById obtener la referencia, pero al final hacerlo de esta forma requiere emular lo mismo que hace getElementsByTagName, en el sentido de tener un bucle para poder hacer referencia a cada fila. evitando esto me ahorro codigo y tiempo de analizacion.

en resumen, lo importante es que por ID no puedes obtener los campos porque simplemente los campos no tienen ID. al no tener ID, cuando se clonan tampoco tienen ID.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.