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.