no, de hecho no es problema por que se crea el campo, de hecho tratare de explicartelo, en si tengo una tabla que a su ves tiene 4 campos, en uno va un campo el cual es para indicar una cantidad, en el segundo va un selec que es donde se selecciona un producto (aqui con ajax cargo un dato que es el precio unitario), el tercer campo es un text que es donde se indica el precio unitario y el ultimo campo es el de total, ahora cuando se cambia el valor del primer campo (cantidad) llama a una funcion que agrega una nueva fila a la tabla con los respectivos campos y selec, ahora cuando cambia el valor de segundo campo (productos) se hace la llamada a una funcion que carga un dato de una base de datos para calcular el total multiplicando la cantidad por el precio unitario para obtener el total por el producto, al final esta funcion hace un llamado a otra funcion la cual suma todos los totales de los productos para sacar un total general y es aqui donde tengo el problema, a continuacion te pongo el codigo que utilizo para crear las filas asi como los campos
Código:
function agrega_fila_producto(numero) {
if (document.getElementById("estado" + numero).value == 1) {
info_productos(numero);
return (false);
}
var tabla = document.getElementById("fila_productos");
var fila = document.createElement("tr");
var campo_uno = document.createElement("td");
campo_uno.setAttribute("align","center");
fila.appendChild(campo_uno);
var cantidad = document.createElement("input");
cantidad.type = "text";
cantidad.value = 1;
cantidad.size = 3;
cantidad.id = "cantidad" + num_fila;
cantidad.setAttribute("NAME", "cantidad" + num_fila);
cantidad.setAttribute("onchange","agrega_fila_producto(" + num_fila + ")");
campo_uno.appendChild(cantidad);
var campo_dos = document.createElement("td");
campo_dos.setAttribute("align","center");
fila.appendChild(campo_dos);
var estado = document.createElement("input");
estado.type = "hidden";
estado.id="estado" + num_fila;
estado.setAttribute("NAME","estado" + num_fila);
estado.value = 0;
campo_dos.appendChild(estado);
var lista = document.createElement("select");
lista.id = "productos" + num_fila;
lista.setAttribute("NAME","productos" + num_fila);
lista.setAttribute("onchange","info_productos(" + num_fila + ")");
campo_dos.appendChild(lista);
var bodega = "1";
var ajax=nuevoAjax();
ajax.open("GET","pedido/cargar_productos.php?bodega=" + bodega,true);
ajax.onreadystatechange=function() {
if (ajax.readyState == 4) {
xml = ajax.responseXML;
total = xml.getElementsByTagName("total")[0].childNodes[0].data;
for (i=0; i<total; i++) {
var opcion = document.createElement("option");
opcion.value = xml.getElementsByTagName("valor")[i].childNodes[0].data;
opcion.innerHTML = xml.getElementsByTagName("producto")[i].childNodes[0].data;
lista.appendChild(opcion);
}
}
}
ajax.send(null);
var opcion = document.createElement("option");
opcion.value = "";
opcion.innerHTML = "Selecciona un producto...";
lista.appendChild(opcion);
var campo_tres = document.createElement("td");
campo_tres.setAttribute("align","center");
campo_tres.innerHTML = "$";
fila.appendChild(campo_tres);
var uni = document.createElement("input");
uni.type = "text";
uni.size = 4;
uni.id = "uni" + num_fila;
uni.setAttribute("NAME","uni" + num_fila);
uni.readOnly = !this.readOnly;
campo_tres.appendChild(uni);
var campo_cuatro = document.createElement("td");
campo_cuatro.setAttribute("align","center");
campo_cuatro.innerHTML = "$";
fila.appendChild(campo_cuatro);
var total = document.createElement("input");
total.type = "text";
total.size = 4;
total.id = "total" + num_fila;
total.setAttribute("NAME","total" + num_fila);
total.readOnly = !this.readOnly;
campo_cuatro.appendChild(total);
tabla.appendChild(fila);
document.getElementById("estado" + numero).value = 1;
num_fila++;
}
la variable num_fila es global, osea, se definio fuera de toda funcion
ahora la funcion que calcula el total por producto
Código:
function info_productos(numero) {
var cantidad = document.getElementById("cantidad" + numero).value;
var producto = document.getElementById("productos" + numero).value;
var ajax=nuevoAjax();
ajax.open("GET","pedido/info_producto.php?producto=" + producto,true);
ajax.onreadystatechange=function() {
if (ajax.readyState == 4) {
var uni = ajax.responseText;
document.getElementById("uni" + numero).value = uni;
var total = eval(cantidad * uni);
document.getElementById("total" + numero).value = total;
calcular_precio(); //aqui es cuando llamo a la funcion donde tengo problemas
}
}
ajax.send(null);
}
como puedes ver aqui es donde llamo a la funcion donde tengo problemas de que no suma todos los campos :p, por ejemplo de 5 campos creados tendria que sumar los 4 primeros (que ya tienen valor) pero solo suma los 3 primeros, ese es mi problema :D
PD creo que me alarge mucho, bueno de antemano gracias por tu interes